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>
This commit is contained in:
parent
71cd7e80cf
commit
489c693bd0
|
@ -1487,11 +1487,11 @@ static bool copy_data_page(unsigned long dst_pfn, unsigned long src_pfn)
|
|||
s_page = pfn_to_page(src_pfn);
|
||||
d_page = pfn_to_page(dst_pfn);
|
||||
if (PageHighMem(s_page)) {
|
||||
src = kmap_atomic(s_page);
|
||||
dst = kmap_atomic(d_page);
|
||||
src = kmap_local_page(s_page);
|
||||
dst = kmap_local_page(d_page);
|
||||
zeros_only = do_copy_page(dst, src);
|
||||
kunmap_atomic(dst);
|
||||
kunmap_atomic(src);
|
||||
kunmap_local(dst);
|
||||
kunmap_local(src);
|
||||
} else {
|
||||
if (PageHighMem(d_page)) {
|
||||
/*
|
||||
|
@ -1499,9 +1499,9 @@ static bool copy_data_page(unsigned long dst_pfn, unsigned long src_pfn)
|
|||
* data modified by kmap_atomic()
|
||||
*/
|
||||
zeros_only = safe_copy_page(buffer, s_page);
|
||||
dst = kmap_atomic(d_page);
|
||||
dst = kmap_local_page(d_page);
|
||||
copy_page(dst, buffer);
|
||||
kunmap_atomic(dst);
|
||||
kunmap_local(dst);
|
||||
} else {
|
||||
zeros_only = safe_copy_page(page_address(d_page), s_page);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue