kmap_high is defined as EXPORT_SYMBOL, and cannot be called from atomic context. Add might_sleep check is necessary. Signed-off-by: zhangchun <zhang.chuna@xxxxxxx> --- mm/highmem.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/mm/highmem.c b/mm/highmem.c index 07f2c67..5cfb5a9 100644 --- a/mm/highmem.c +++ b/mm/highmem.c @@ -319,6 +319,11 @@ void *kmap_high(struct page *page) unsigned long vaddr; /* + * Use might_sleep to check if kmap_high is called + * from atomic context. + */ + might_sleep(); + /* * For highmem pages, we can't trust "virtual" until * after we have the lock. */ -- 1.8.3.1