nfs: don't zero out the rest of the page if we hit the EOF on a DIO READ
authorJeff Layton <jlayton@redhat.com>
Wed, 12 Dec 2012 16:38:44 +0000 (11:38 -0500)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Wed, 12 Dec 2012 17:56:09 +0000 (12:56 -0500)
commit67fad106a219e083c91c79695bd1807dde1bf7b9
tree77f79f5de4376beb4b9b6fde4b39b3786c717a9a
parentb0ef9647a0cd6cfd63fed48fbbe6005e4ba92571
nfs: don't zero out the rest of the page if we hit the EOF on a DIO READ

Eryu provided a test program that would segfault when attempting to read
past the EOF on file that was opened O_DIRECT. The buffer given to the
read() call was on the stack, and when he attempted to read past it it
would scribble over the rest of the stack page.

If we hit the end of the file on a DIO READ request, then we don't want
to zero out the rest of the buffer. These aren't pagecache pages after
all, and there's no guarantee that the buffers that were passed in
represent entire pages.

Cc: <stable@vger.kernel.org> # v3.5+
Cc: Fred Isaman <iisaman@netapp.com>
Reported-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
fs/nfs/direct.c