0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 #include <linux/errno.h>
0014 #include <linux/crash_dump.h>
0015 #include <linux/uaccess.h>
0016 #include <linux/io.h>
0017 #include <linux/uio.h>
0018
0019 ssize_t copy_oldmem_page(struct iov_iter *iter, unsigned long pfn,
0020 size_t csize, unsigned long offset)
0021 {
0022 void *vaddr;
0023
0024 if (!csize)
0025 return 0;
0026
0027 vaddr = ioremap(__pfn_to_phys(pfn), PAGE_SIZE);
0028 if (!vaddr)
0029 return -ENOMEM;
0030
0031 csize = copy_to_iter(vaddr + offset, csize, iter);
0032
0033 iounmap(vaddr);
0034 return csize;
0035 }