Browse Source

NFS: Verify server address before invoking in-kernel mount client

Re-order mount option sanity checking slightly to ensure we have a valid
server address *before* trying to do the mountd RPC call.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Chuck Lever 18 years ago
parent
commit
6e88e0618c
1 changed files with 8 additions and 4 deletions
  1. 8 4
      fs/nfs/super.c

+ 8 - 4
fs/nfs/super.c

@@ -1100,6 +1100,10 @@ static int nfs_validate_mount_data(void *options,
 		if (mntfh->size < sizeof(mntfh->data))
 			memset(mntfh->data + mntfh->size, 0,
 			       sizeof(mntfh->data) - mntfh->size);
+
+		if (!nfs_verify_server_address((struct sockaddr *) &data->addr))
+			goto out_no_address;
+
 		/*
 		 * Translate to nfs_parsed_mount_data, which nfs_fill_super
 		 * can deal with.
@@ -1131,6 +1135,10 @@ static int nfs_validate_mount_data(void *options,
 		if (nfs_parse_mount_options((char *)options, args) == 0)
 			return -EINVAL;
 
+		if (!nfs_verify_server_address((struct sockaddr *)
+						&args->nfs_server.address))
+			goto out_no_address;
+
 		c = strchr(dev_name, ':');
 		if (c == NULL)
 			return -EINVAL;
@@ -1159,10 +1167,6 @@ static int nfs_validate_mount_data(void *options,
 		goto out_v3_not_compiled;
 #endif /* !CONFIG_NFS_V3 */
 
-	if (!nfs_verify_server_address((struct sockaddr *)
-						&args->nfs_server.address))
-		goto out_no_address;
-
 	return 0;
 
 out_no_data: