projects
/
firefly-linux-kernel-4.4.55.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'for-linus' into for-next
[firefly-linux-kernel-4.4.55.git]
/
arch
/
microblaze
/
mm
/
highmem.c
diff --git
a/arch/microblaze/mm/highmem.c
b/arch/microblaze/mm/highmem.c
index 5a92576fad927127eb05fbe24833b57e18ba7155..2fcc5a52d84d1c2cf25d0cc45c356ce14549d74e 100644
(file)
--- 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)
unsigned long vaddr;
int idx, type;
unsigned long vaddr;
int idx, type;
- /* even !CONFIG_PREEMPT needs this, for in_atomic in do_page_fault */
+ preempt_disable();
pagefault_disable();
if (!PageHighMem(page))
return page_address(page);
pagefault_disable();
if (!PageHighMem(page))
return page_address(page);
@@
-63,6
+63,7
@@
void __kunmap_atomic(void *kvaddr)
if (vaddr < __fix_to_virt(FIX_KMAP_END)) {
pagefault_enable();
if (vaddr < __fix_to_virt(FIX_KMAP_END)) {
pagefault_enable();
+ preempt_enable();
return;
}
return;
}
@@
-84,5
+85,6
@@
void __kunmap_atomic(void *kvaddr)
#endif
kmap_atomic_idx_pop();
pagefault_enable();
#endif
kmap_atomic_idx_pop();
pagefault_enable();
+ preempt_enable();
}
EXPORT_SYMBOL(__kunmap_atomic);
}
EXPORT_SYMBOL(__kunmap_atomic);