Commit 8b0cf2f6 authored by Steve Dickson's avatar Steve Dickson Committed by Linus Torvalds

[PATCH] nsf4 oops fixes

Here are some oops I found in error paths in the mounting pathes while
debugging something else...  I sent it out a while ago, but it didn't seem
to get any traction....

The nfs_fill_super() fix is obvious and in nfs4_fill_super(), the
server->client ptr needs to be set before the cl_idmap check, since
rpc_shutdown_client() needs it when the check fails.
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent db386bbe
...@@ -456,7 +456,7 @@ nfs_fill_super(struct super_block *sb, struct nfs_mount_data *data, int silent) ...@@ -456,7 +456,7 @@ nfs_fill_super(struct super_block *sb, struct nfs_mount_data *data, int silent)
/* Create RPC client handles */ /* Create RPC client handles */
server->client = nfs_create_client(server, data); server->client = nfs_create_client(server, data);
if (server->client == NULL) if (IS_ERR(server->client))
goto out_fail; goto out_fail;
/* RFC 2623, sec 2.3.2 */ /* RFC 2623, sec 2.3.2 */
if (authflavor != RPC_AUTH_UNIX) { if (authflavor != RPC_AUTH_UNIX) {
...@@ -1550,16 +1550,17 @@ static int nfs4_fill_super(struct super_block *sb, struct nfs4_mount_data *data, ...@@ -1550,16 +1550,17 @@ static int nfs4_fill_super(struct super_block *sb, struct nfs4_mount_data *data,
err = PTR_ERR(clnt); err = PTR_ERR(clnt);
goto out_remove_list; goto out_remove_list;
} }
clnt->cl_intr = (server->flags & NFS4_MOUNT_INTR) ? 1 : 0;
clnt->cl_softrtry = (server->flags & NFS4_MOUNT_SOFT) ? 1 : 0;
server->client = clnt;
err = -ENOMEM; err = -ENOMEM;
if (server->nfs4_state->cl_idmap == NULL) { if (server->nfs4_state->cl_idmap == NULL) {
printk(KERN_WARNING "NFS: failed to create idmapper.\n"); printk(KERN_WARNING "NFS: failed to create idmapper.\n");
goto out_shutdown; goto out_shutdown;
} }
clnt->cl_intr = (server->flags & NFS4_MOUNT_INTR) ? 1 : 0;
clnt->cl_softrtry = (server->flags & NFS4_MOUNT_SOFT) ? 1 : 0;
server->client = clnt;
if (clnt->cl_auth->au_flavor != authflavour) { if (clnt->cl_auth->au_flavor != authflavour) {
if (rpcauth_create(authflavour, clnt) == NULL) { if (rpcauth_create(authflavour, clnt) == NULL) {
printk(KERN_WARNING "NFS: couldn't create credcache!\n"); printk(KERN_WARNING "NFS: couldn't create credcache!\n");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment