diff options
Diffstat (limited to 'arch/powerpc/mm/highmem.c')
-rw-r--r-- | arch/powerpc/mm/highmem.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/powerpc/mm/highmem.c b/arch/powerpc/mm/highmem.c index e7450bdbe83a..e292c8a60952 100644 --- a/arch/powerpc/mm/highmem.c +++ b/arch/powerpc/mm/highmem.c | |||
@@ -34,7 +34,7 @@ void *kmap_atomic_prot(struct page *page, pgprot_t prot) | |||
34 | unsigned long vaddr; | 34 | unsigned long vaddr; |
35 | int idx, type; | 35 | int idx, type; |
36 | 36 | ||
37 | /* even !CONFIG_PREEMPT needs this, for in_atomic in do_page_fault */ | 37 | preempt_disable(); |
38 | pagefault_disable(); | 38 | pagefault_disable(); |
39 | if (!PageHighMem(page)) | 39 | if (!PageHighMem(page)) |
40 | return page_address(page); | 40 | return page_address(page); |
@@ -59,6 +59,7 @@ void __kunmap_atomic(void *kvaddr) | |||
59 | 59 | ||
60 | if (vaddr < __fix_to_virt(FIX_KMAP_END)) { | 60 | if (vaddr < __fix_to_virt(FIX_KMAP_END)) { |
61 | pagefault_enable(); | 61 | pagefault_enable(); |
62 | preempt_enable(); | ||
62 | return; | 63 | return; |
63 | } | 64 | } |
64 | 65 | ||
@@ -82,5 +83,6 @@ void __kunmap_atomic(void *kvaddr) | |||
82 | 83 | ||
83 | kmap_atomic_idx_pop(); | 84 | kmap_atomic_idx_pop(); |
84 | pagefault_enable(); | 85 | pagefault_enable(); |
86 | preempt_enable(); | ||
85 | } | 87 | } |
86 | EXPORT_SYMBOL(__kunmap_atomic); | 88 | EXPORT_SYMBOL(__kunmap_atomic); |