aboutsummaryrefslogtreecommitdiffstats
path: root/arch/microblaze
diff options
context:
space:
mode:
Diffstat (limited to 'arch/microblaze')
-rw-r--r--arch/microblaze/mm/highmem.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/microblaze/mm/highmem.c b/arch/microblaze/mm/highmem.c
index 5a92576fad92..2fcc5a52d84d 100644
--- a/arch/microblaze/mm/highmem.c
+++ b/arch/microblaze/mm/highmem.c
@@ -37,7 +37,7 @@ void *kmap_atomic_prot(struct page *page, pgprot_t prot)
37 unsigned long vaddr; 37 unsigned long vaddr;
38 int idx, type; 38 int idx, type;
39 39
40 /* even !CONFIG_PREEMPT needs this, for in_atomic in do_page_fault */ 40 preempt_disable();
41 pagefault_disable(); 41 pagefault_disable();
42 if (!PageHighMem(page)) 42 if (!PageHighMem(page))
43 return page_address(page); 43 return page_address(page);
@@ -63,6 +63,7 @@ void __kunmap_atomic(void *kvaddr)
63 63
64 if (vaddr < __fix_to_virt(FIX_KMAP_END)) { 64 if (vaddr < __fix_to_virt(FIX_KMAP_END)) {
65 pagefault_enable(); 65 pagefault_enable();
66 preempt_enable();
66 return; 67 return;
67 } 68 }
68 69
@@ -84,5 +85,6 @@ void __kunmap_atomic(void *kvaddr)
84#endif 85#endif
85 kmap_atomic_idx_pop(); 86 kmap_atomic_idx_pop();
86 pagefault_enable(); 87 pagefault_enable();
88 preempt_enable();
87} 89}
88EXPORT_SYMBOL(__kunmap_atomic); 90EXPORT_SYMBOL(__kunmap_atomic);