aboutsummaryrefslogtreecommitdiffstats
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
parentf9d888fcd9665b863fa042212a3ee7b4c51399f6 (diff)
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>
-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,
1685 1685
1686 dprintk("MNTPATH: %s\n", *mntpath); 1686 dprintk("MNTPATH: %s\n", *mntpath);
1687 1687
1688 if (args.client_address == NULL)
1689 goto out_no_client_address;
1690
1688 *ip_addr = args.client_address; 1691 *ip_addr = args.client_address;
1689 1692
1690 break; 1693 break;
@@ -1705,6 +1708,10 @@ out_inval_auth:
1705out_no_address: 1708out_no_address:
1706 dfprintk(MOUNT, "NFS4: mount program didn't pass remote address\n"); 1709 dfprintk(MOUNT, "NFS4: mount program didn't pass remote address\n");
1707 return -EINVAL; 1710 return -EINVAL;
1711
1712out_no_client_address:
1713 dfprintk(MOUNT, "NFS4: mount program didn't pass callback address\n");
1714 return -EINVAL;
1708} 1715}
1709 1716
1710/* 1717/*