diff options
Diffstat (limited to 'arch/arm/mm/highmem.c')
-rw-r--r-- | arch/arm/mm/highmem.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/arm/mm/highmem.c b/arch/arm/mm/highmem.c index b98895d9fe57..ee8dfa793989 100644 --- a/arch/arm/mm/highmem.c +++ b/arch/arm/mm/highmem.c | |||
@@ -59,6 +59,7 @@ void *kmap_atomic(struct page *page) | |||
59 | void *kmap; | 59 | void *kmap; |
60 | int type; | 60 | int type; |
61 | 61 | ||
62 | preempt_disable(); | ||
62 | pagefault_disable(); | 63 | pagefault_disable(); |
63 | if (!PageHighMem(page)) | 64 | if (!PageHighMem(page)) |
64 | return page_address(page); | 65 | return page_address(page); |
@@ -121,6 +122,7 @@ void __kunmap_atomic(void *kvaddr) | |||
121 | kunmap_high(pte_page(pkmap_page_table[PKMAP_NR(vaddr)])); | 122 | kunmap_high(pte_page(pkmap_page_table[PKMAP_NR(vaddr)])); |
122 | } | 123 | } |
123 | pagefault_enable(); | 124 | pagefault_enable(); |
125 | preempt_enable(); | ||
124 | } | 126 | } |
125 | EXPORT_SYMBOL(__kunmap_atomic); | 127 | EXPORT_SYMBOL(__kunmap_atomic); |
126 | 128 | ||
@@ -130,6 +132,7 @@ void *kmap_atomic_pfn(unsigned long pfn) | |||
130 | int idx, type; | 132 | int idx, type; |
131 | struct page *page = pfn_to_page(pfn); | 133 | struct page *page = pfn_to_page(pfn); |
132 | 134 | ||
135 | preempt_disable(); | ||
133 | pagefault_disable(); | 136 | pagefault_disable(); |
134 | if (!PageHighMem(page)) | 137 | if (!PageHighMem(page)) |
135 | return page_address(page); | 138 | return page_address(page); |