]> git.neil.brown.name Git - history.git/commitdiff
[PATCH] nsf4 oops fixes
authorSteve Dickson <steved@redhat.com>
Mon, 2 Aug 2004 03:15:19 +0000 (20:15 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Mon, 2 Aug 2004 03:15:19 +0000 (20:15 -0700)
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: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
fs/nfs/inode.c

index d3cf187b95ba01da7a5c757892a71e14ac932336..36f5abc65dcba5f3687209bf3eb49e4010d8b68b 100644 (file)
@@ -456,7 +456,7 @@ nfs_fill_super(struct super_block *sb, struct nfs_mount_data *data, int silent)
 
        /* Create RPC client handles */
        server->client = nfs_create_client(server, data);
-       if (server->client == NULL)
+       if (IS_ERR(server->client))
                goto out_fail;
        /* RFC 2623, sec 2.3.2 */
        if (authflavor != RPC_AUTH_UNIX) {
@@ -1550,16 +1550,17 @@ static int nfs4_fill_super(struct super_block *sb, struct nfs4_mount_data *data,
                err = PTR_ERR(clnt);
                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;
        if (server->nfs4_state->cl_idmap == NULL) {
                printk(KERN_WARNING "NFS: failed to create idmapper.\n");
                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 (rpcauth_create(authflavour, clnt) == NULL) {
                        printk(KERN_WARNING "NFS: couldn't create credcache!\n");