aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/nfs4xdr.c
diff options
context:
space:
mode:
authorTrond Myklebust <Trond.Myklebust@netapp.com>2012-08-01 14:21:12 -0400
committerTrond Myklebust <Trond.Myklebust@netapp.com>2012-09-26 12:43:10 -0400
commit13fe4ba1b64c099843c75b4f0633ad30a4526637 (patch)
tree28d579d3ed2cccf72f77963fbf6e5f15eff4ee92 /fs/nfs/nfs4xdr.c
parentSUNRPC: Fix the return value of xdr_align_pages() (diff)
downloadlinux-dev-13fe4ba1b64c099843c75b4f0633ad30a4526637.tar.xz
linux-dev-13fe4ba1b64c099843c75b4f0633ad30a4526637.zip
NFSv4.1: decode_getdeviceinfo should check xdr_read_pages() return value
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/nfs4xdr.c')
-rw-r--r--fs/nfs/nfs4xdr.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c
index 8dba6bd48557..a756349b0fa4 100644
--- a/fs/nfs/nfs4xdr.c
+++ b/fs/nfs/nfs4xdr.c
@@ -5642,7 +5642,8 @@ static int decode_getdeviceinfo(struct xdr_stream *xdr,
* and places the remaining xdr data in xdr_buf->tail
*/
pdev->mincount = be32_to_cpup(p);
- xdr_read_pages(xdr, pdev->mincount); /* include space for the length */
+ if (xdr_read_pages(xdr, pdev->mincount) != pdev->mincount)
+ goto out_overflow;
/* Parse notification bitmap, verifying that it is zero. */
p = xdr_inline_decode(xdr, 4);