summaryrefslogtreecommitdiffstats
path: root/fs/nfs/super.c
diff options
context:
space:
mode:
authorJeff Layton <jlayton@redhat.com>2007-07-18 11:28:43 -0400
committerTrond Myklebust <Trond.Myklebust@netapp.com>2007-07-19 15:21:40 -0400
commit0a87cf128f3d3bc6aa7b1040e73109c974ed875a (patch)
tree07bfeee89a7df2377cdb2b7d6770d66edd8bb308 /fs/nfs/super.c
parentf9d888fcd9665b863fa042212a3ee7b4c51399f6 (diff)
downloadlinux-0a87cf128f3d3bc6aa7b1040e73109c974ed875a.tar.gz
linux-0a87cf128f3d3bc6aa7b1040e73109c974ed875a.tar.bz2
linux-0a87cf128f3d3bc6aa7b1040e73109c974ed875a.zip
NFSv4: handle lack of clientaddr in option string
If a NFSv4 mount is attempted with string based options, and the option string doesn't contain a clientaddr= option, the kernel will currently oops. Check for this situation and return a proper error. Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/super.c')
-rw-r--r--fs/nfs/super.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/fs/nfs/super.c b/fs/nfs/super.c
index adffe1615c51..b34b7a711d5b 100644
--- a/fs/nfs/super.c
+++ b/fs/nfs/super.c
@@ -1685,6 +1685,9 @@ static int nfs4_validate_mount_data(struct nfs4_mount_data **options,
dprintk("MNTPATH: %s\n", *mntpath);
+ if (args.client_address == NULL)
+ goto out_no_client_address;
+
*ip_addr = args.client_address;
break;
@@ -1705,6 +1708,10 @@ out_inval_auth:
out_no_address:
dfprintk(MOUNT, "NFS4: mount program didn't pass remote address\n");
return -EINVAL;
+
+out_no_client_address:
+ dfprintk(MOUNT, "NFS4: mount program didn't pass callback address\n");
+ return -EINVAL;
}
/*