1 | // SPDX-License-Identifier: GPL-2.0 |
---|---|
2 | #include <linux/crash_dump.h> |
3 | #include <linux/io.h> |
4 | #include <linux/uio.h> |
5 | |
6 | ssize_t copy_oldmem_page(struct iov_iter *iter, unsigned long pfn, |
7 | size_t csize, unsigned long offset) |
8 | { |
9 | void *vaddr; |
10 | |
11 | if (!csize) |
12 | return 0; |
13 | |
14 | vaddr = memremap(__pfn_to_phys(pfn), PAGE_SIZE, flags: MEMREMAP_WB); |
15 | if (!vaddr) |
16 | return -ENOMEM; |
17 | |
18 | csize = copy_to_iter(addr: vaddr + offset, bytes: csize, i: iter); |
19 | |
20 | memunmap(addr: vaddr); |
21 | |
22 | return csize; |
23 | } |
24 |