From: Jeff Mahoney Subject: initramfs-dsdt: Remember to kmap pages The original initramfs DSDT patches didn't kmap pages which could have resulted in Oopses. Signed-off-by: Jeff Mahoney --- init/initramfs.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) --- a/init/initramfs.c +++ b/init/initramfs.c @@ -367,8 +367,9 @@ ssize_t initramfs_file_read(struct file break; } - data = page_address(page); + data = kmap_atomic(page, KM_USER0); memcpy(i.iov->iov_base + i.iov_offset, data + offset, bytes); + kunmap_atomic(data); iov_iter_advance(&i, bytes); pos += bytes; @@ -420,13 +421,15 @@ ssize_t initramfs_file_write(struct file &page, &fsdata); if (unlikely(status)) break; - data = page_address(page); + data = kmap_atomic(page, KM_USER0); memcpy(data + offset, i.iov->iov_base + i.iov_offset, bytes); copied = bytes; status = simple_write_end(file, mapping, pos, bytes, copied, page, fsdata); + + kunmap_atomic(data, KM_USER0); if (unlikely(status < 0)) break; copied = status;