| From c0cf3ef5e0f47e385920450b245d22bead93e7ad Mon Sep 17 00:00:00 2001 |
| From: Al Viro <viro@zeniv.linux.org.uk> |
| Date: Mon, 5 Sep 2016 21:42:32 -0400 |
| Subject: nfs_write_end(): fix handling of short copies |
| |
| From: Al Viro <viro@zeniv.linux.org.uk> |
| |
| commit c0cf3ef5e0f47e385920450b245d22bead93e7ad upstream. |
| |
| What matters when deciding if we should make a page uptodate is |
| not how much we _wanted_ to copy, but how much we actually have |
| copied. As it is, on architectures that do not zero tail on |
| short copy we can leave uninitialized data in page marked uptodate. |
| |
| Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| fs/nfs/file.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/fs/nfs/file.c |
| +++ b/fs/nfs/file.c |
| @@ -407,7 +407,7 @@ static int nfs_write_end(struct file *fi |
| */ |
| if (!PageUptodate(page)) { |
| unsigned pglen = nfs_page_length(page); |
| - unsigned end = offset + len; |
| + unsigned end = offset + copied; |
| |
| if (pglen == 0) { |
| zero_user_segments(page, 0, offset, |