diff options
| author | H. Peter Anvin <hpa@zytor.com> | 2009-03-03 21:05:42 -0800 |
|---|---|---|
| committer | H. Peter Anvin <hpa@zytor.com> | 2009-03-03 21:05:42 -0800 |
| commit | 2e22ea7cea0f7de86fd30df867fbf5b7e8eee0fd (patch) | |
| tree | 8b8e5583fb2787ff7107a6f59b114ddcd2c2f691 /mm/filemap.c | |
| parent | 638bee71c83a2837b48062fdc5b222163cf53d79 (diff) | |
| parent | 645af4e9e0e32481e3336dda813688732c7e5f0f (diff) | |
Merge branch 'x86/core' into x86/mce2
Diffstat (limited to 'mm/filemap.c')
| -rw-r--r-- | mm/filemap.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/mm/filemap.c b/mm/filemap.c index 23acefe51808..60fd56772cc6 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -1816,14 +1816,14 @@ EXPORT_SYMBOL(file_remove_suid); static size_t __iovec_copy_from_user_inatomic(char *vaddr, const struct iovec *iov, size_t base, size_t bytes) { - size_t copied = 0, left = 0; + size_t copied = 0, left = 0, total = bytes; while (bytes) { char __user *buf = iov->iov_base + base; int copy = min(bytes, iov->iov_len - base); base = 0; - left = __copy_from_user_inatomic_nocache(vaddr, buf, copy); + left = __copy_from_user_inatomic_nocache(vaddr, buf, copy, total); copied += copy; bytes -= copy; vaddr += copy; @@ -1851,8 +1851,9 @@ size_t iov_iter_copy_from_user_atomic(struct page *page, if (likely(i->nr_segs == 1)) { int left; char __user *buf = i->iov->iov_base + i->iov_offset; + left = __copy_from_user_inatomic_nocache(kaddr + offset, - buf, bytes); + buf, bytes, bytes); copied = bytes - left; } else { copied = __iovec_copy_from_user_inatomic(kaddr + offset, @@ -1880,7 +1881,8 @@ size_t iov_iter_copy_from_user(struct page *page, if (likely(i->nr_segs == 1)) { int left; char __user *buf = i->iov->iov_base + i->iov_offset; - left = __copy_from_user_nocache(kaddr + offset, buf, bytes); + + left = __copy_from_user_nocache(kaddr + offset, buf, bytes, bytes); copied = bytes - left; } else { copied = __iovec_copy_from_user_inatomic(kaddr + offset, |
