diff options
author | David Hildenbrand <dahi@linux.vnet.ibm.com> | 2015-05-11 17:52:09 +0200 |
---|---|---|
committer | Anders Roxell <anders.roxell@linaro.org> | 2015-07-26 11:07:09 +0200 |
commit | 6f60deb47707b879e4e263d700742cf9a3e6901d (patch) | |
tree | 2e281541ef5966e22506f2464b23be82d4faa019 /arch/arm/mm | |
parent | e4af19e389aa74c01ee74d5d71c3599e14551352 (diff) |
sched/preempt, mm/kmap: Explicitly disable/enable preemption in kmap_atomic_*
The existing code relies on pagefault_disable() implicitly disabling
preemption, so that no schedule will happen between kmap_atomic() and
kunmap_atomic().
Let's make this explicit, to prepare for pagefault_disable() not
touching preemption anymore.
[uptream commit 2cb7c9cb426660b5ed58b643d9e7dd5d50ba901f]
Signed-off-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Diffstat (limited to 'arch/arm/mm')
-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) void *kmap; int type; + preempt_disable(); pagefault_disable(); if (!PageHighMem(page)) return page_address(page); @@ -121,6 +122,7 @@ void __kunmap_atomic(void *kvaddr) kunmap_high(pte_page(pkmap_page_table[PKMAP_NR(vaddr)])); } pagefault_enable(); + preempt_enable(); } EXPORT_SYMBOL(__kunmap_atomic); @@ -130,6 +132,7 @@ void *kmap_atomic_pfn(unsigned long pfn) int idx, type; struct page *page = pfn_to_page(pfn); + preempt_disable(); pagefault_disable(); if (!PageHighMem(page)) return page_address(page); |