summaryrefslogtreecommitdiffstats
path: root/fs/nfs/super.c
diff options
context:
space:
mode:
authorTrond Myklebust <Trond.Myklebust@netapp.com>2008-06-19 15:21:11 -0400
committerTrond Myklebust <Trond.Myklebust@netapp.com>2008-06-23 17:09:06 -0400
commitb7e2445737ff69cef892b6fd9cd71cae2c9e9515 (patch)
treed248fa5765d8e4b6ab00f10a77f9cbe793644672 /fs/nfs/super.c
parent33852a1f2bb014e4047a844556c0d76a2f790c37 (diff)
downloadlinux-b7e2445737ff69cef892b6fd9cd71cae2c9e9515.tar.gz
linux-b7e2445737ff69cef892b6fd9cd71cae2c9e9515.tar.bz2
linux-b7e2445737ff69cef892b6fd9cd71cae2c9e9515.zip
NFS: Fix filehandle size comparisons in the mount code
Fix a sign issue in xdr_decode_fhstatus3() Fix incorrect comparison in nfs_validate_mount_data() Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/super.c')
-rw-r--r--fs/nfs/super.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/fs/nfs/super.c b/fs/nfs/super.c
index dac663dc5611..614efeed5437 100644
--- a/fs/nfs/super.c
+++ b/fs/nfs/super.c
@@ -1249,13 +1249,13 @@ static int nfs_validate_mount_data(void *options,
case 5:
memset(data->context, 0, sizeof(data->context));
case 6:
- if (data->flags & NFS_MOUNT_VER3)
+ if (data->flags & NFS_MOUNT_VER3) {
+ if (data->root.size > NFS3_FHSIZE || data->root.size == 0)
+ goto out_invalid_fh;
mntfh->size = data->root.size;
- else
+ } else
mntfh->size = NFS2_FHSIZE;
- if (mntfh->size > sizeof(mntfh->data))
- goto out_invalid_fh;
memcpy(mntfh->data, data->root.data, mntfh->size);
if (mntfh->size < sizeof(mntfh->data))