diff options
Diffstat (limited to 'mm')
-rw-r--r-- | mm/filemap.c | 11 | ||||
-rw-r--r-- | mm/filemap_xip.c | 2 |
2 files changed, 5 insertions, 8 deletions
diff --git a/mm/filemap.c b/mm/filemap.c index 60fd56772cc6..126d3973b3d1 100644 --- a/mm/filemap.c +++ b/mm/filemap.c | |||
@@ -1816,14 +1816,14 @@ EXPORT_SYMBOL(file_remove_suid); | |||
1816 | static size_t __iovec_copy_from_user_inatomic(char *vaddr, | 1816 | static size_t __iovec_copy_from_user_inatomic(char *vaddr, |
1817 | const struct iovec *iov, size_t base, size_t bytes) | 1817 | const struct iovec *iov, size_t base, size_t bytes) |
1818 | { | 1818 | { |
1819 | size_t copied = 0, left = 0, total = bytes; | 1819 | size_t copied = 0, left = 0; |
1820 | 1820 | ||
1821 | while (bytes) { | 1821 | while (bytes) { |
1822 | char __user *buf = iov->iov_base + base; | 1822 | char __user *buf = iov->iov_base + base; |
1823 | int copy = min(bytes, iov->iov_len - base); | 1823 | int copy = min(bytes, iov->iov_len - base); |
1824 | 1824 | ||
1825 | base = 0; | 1825 | base = 0; |
1826 | left = __copy_from_user_inatomic_nocache(vaddr, buf, copy, total); | 1826 | left = __copy_from_user_inatomic(vaddr, buf, copy); |
1827 | copied += copy; | 1827 | copied += copy; |
1828 | bytes -= copy; | 1828 | bytes -= copy; |
1829 | vaddr += copy; | 1829 | vaddr += copy; |
@@ -1851,9 +1851,7 @@ size_t iov_iter_copy_from_user_atomic(struct page *page, | |||
1851 | if (likely(i->nr_segs == 1)) { | 1851 | if (likely(i->nr_segs == 1)) { |
1852 | int left; | 1852 | int left; |
1853 | char __user *buf = i->iov->iov_base + i->iov_offset; | 1853 | char __user *buf = i->iov->iov_base + i->iov_offset; |
1854 | 1854 | left = __copy_from_user_inatomic(kaddr + offset, buf, bytes); | |
1855 | left = __copy_from_user_inatomic_nocache(kaddr + offset, | ||
1856 | buf, bytes, bytes); | ||
1857 | copied = bytes - left; | 1855 | copied = bytes - left; |
1858 | } else { | 1856 | } else { |
1859 | copied = __iovec_copy_from_user_inatomic(kaddr + offset, | 1857 | copied = __iovec_copy_from_user_inatomic(kaddr + offset, |
@@ -1881,8 +1879,7 @@ size_t iov_iter_copy_from_user(struct page *page, | |||
1881 | if (likely(i->nr_segs == 1)) { | 1879 | if (likely(i->nr_segs == 1)) { |
1882 | int left; | 1880 | int left; |
1883 | char __user *buf = i->iov->iov_base + i->iov_offset; | 1881 | char __user *buf = i->iov->iov_base + i->iov_offset; |
1884 | 1882 | left = __copy_from_user(kaddr + offset, buf, bytes); | |
1885 | left = __copy_from_user_nocache(kaddr + offset, buf, bytes, bytes); | ||
1886 | copied = bytes - left; | 1883 | copied = bytes - left; |
1887 | } else { | 1884 | } else { |
1888 | copied = __iovec_copy_from_user_inatomic(kaddr + offset, | 1885 | copied = __iovec_copy_from_user_inatomic(kaddr + offset, |
diff --git a/mm/filemap_xip.c b/mm/filemap_xip.c index bf54f8a2cf1d..0c04615651b7 100644 --- a/mm/filemap_xip.c +++ b/mm/filemap_xip.c | |||
@@ -354,7 +354,7 @@ __xip_file_write(struct file *filp, const char __user *buf, | |||
354 | break; | 354 | break; |
355 | 355 | ||
356 | copied = bytes - | 356 | copied = bytes - |
357 | __copy_from_user_nocache(xip_mem + offset, buf, bytes, bytes); | 357 | __copy_from_user_nocache(xip_mem + offset, buf, bytes); |
358 | 358 | ||
359 | if (likely(copied > 0)) { | 359 | if (likely(copied > 0)) { |
360 | status = copied; | 360 | status = copied; |