[MIPS] Fix buggy use of kmap_coherent.
Assuming the call of kmap_coherent in local_r4k_flush_cache_page doesn't need fixing this was skipped in fcae549295bcae801ac48fc1c2030ab8cc487020. Turns out it needed the same change after all. Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
Родитель
0c3bd83b09
Коммит
c9c5023d83
|
@ -446,6 +446,7 @@ static inline void local_r4k_flush_cache_page(void *args)
|
||||||
struct page *page = pfn_to_page(fcp_args->pfn);
|
struct page *page = pfn_to_page(fcp_args->pfn);
|
||||||
int exec = vma->vm_flags & VM_EXEC;
|
int exec = vma->vm_flags & VM_EXEC;
|
||||||
struct mm_struct *mm = vma->vm_mm;
|
struct mm_struct *mm = vma->vm_mm;
|
||||||
|
int map_coherent = 0;
|
||||||
pgd_t *pgdp;
|
pgd_t *pgdp;
|
||||||
pud_t *pudp;
|
pud_t *pudp;
|
||||||
pmd_t *pmdp;
|
pmd_t *pmdp;
|
||||||
|
@ -479,7 +480,9 @@ static inline void local_r4k_flush_cache_page(void *args)
|
||||||
* Use kmap_coherent or kmap_atomic to do flushes for
|
* Use kmap_coherent or kmap_atomic to do flushes for
|
||||||
* another ASID than the current one.
|
* another ASID than the current one.
|
||||||
*/
|
*/
|
||||||
if (cpu_has_dc_aliases)
|
map_coherent = (cpu_has_dc_aliases &&
|
||||||
|
page_mapped(page) && !Page_dcache_dirty(page));
|
||||||
|
if (map_coherent)
|
||||||
vaddr = kmap_coherent(page, addr);
|
vaddr = kmap_coherent(page, addr);
|
||||||
else
|
else
|
||||||
vaddr = kmap_atomic(page, KM_USER0);
|
vaddr = kmap_atomic(page, KM_USER0);
|
||||||
|
@ -502,7 +505,7 @@ static inline void local_r4k_flush_cache_page(void *args)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vaddr) {
|
if (vaddr) {
|
||||||
if (cpu_has_dc_aliases)
|
if (map_coherent)
|
||||||
kunmap_coherent();
|
kunmap_coherent();
|
||||||
else
|
else
|
||||||
kunmap_atomic(vaddr, KM_USER0);
|
kunmap_atomic(vaddr, KM_USER0);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче