Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

PM: hibernate: Use kmap_local_page() in copy_data_page()

kmap_atomic() has been deprecated in favor of kmap_local_page().

kmap_atomic() disables page-faults and preemption (the latter
only for !PREEMPT_RT kernels).The code between the mapping and
un-mapping in this patch does not depend on the above-mentioned
side effects.So simply replaced kmap_atomic() with kmap_local_page().

Signed-off-by: Chen Haonan <chen.haonan2@zte.com.cn>
[ rjw: Subject edits ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

authored by

Chen Haonan and committed by
Rafael J. Wysocki
489c693b 71cd7e80

+6 -6
+6 -6
kernel/power/snapshot.c
··· 1487 1487 s_page = pfn_to_page(src_pfn); 1488 1488 d_page = pfn_to_page(dst_pfn); 1489 1489 if (PageHighMem(s_page)) { 1490 - src = kmap_atomic(s_page); 1491 - dst = kmap_atomic(d_page); 1490 + src = kmap_local_page(s_page); 1491 + dst = kmap_local_page(d_page); 1492 1492 zeros_only = do_copy_page(dst, src); 1493 - kunmap_atomic(dst); 1494 - kunmap_atomic(src); 1493 + kunmap_local(dst); 1494 + kunmap_local(src); 1495 1495 } else { 1496 1496 if (PageHighMem(d_page)) { 1497 1497 /* ··· 1499 1499 * data modified by kmap_atomic() 1500 1500 */ 1501 1501 zeros_only = safe_copy_page(buffer, s_page); 1502 - dst = kmap_atomic(d_page); 1502 + dst = kmap_local_page(d_page); 1503 1503 copy_page(dst, buffer); 1504 - kunmap_atomic(dst); 1504 + kunmap_local(dst); 1505 1505 } else { 1506 1506 zeros_only = safe_copy_page(page_address(d_page), s_page); 1507 1507 }