From: Linus Torvalds <torvalds@osdl.org>

On Thu, 12 Feb 2004 viro@parcelfarce.linux.theplanet.co.uk wrote:
>
> Nope.  deactivate_super() is the right thing there.  We _do_ hold an
> active reference.  And we definitely want to get ->kill_sb() called.
> 
> *However*, cleanup path in nfs_sb_init() is clearly bogus - it does

Fair enough.

Tim, does Al's patch help? Appended as a real patch, I'll commit it on 
confirmation that it fixes things..



---

 fs/nfs/inode.c |    2 ++
 1 files changed, 2 insertions(+)

diff -puN fs/nfs/inode.c~nfs-mount-oops-fix fs/nfs/inode.c
--- 25/fs/nfs/inode.c~nfs-mount-oops-fix	2004-02-11 22:32:32.000000000 -0800
+++ 25-akpm/fs/nfs/inode.c	2004-02-11 22:32:32.000000000 -0800
@@ -311,6 +311,8 @@ nfs_sb_init(struct super_block *sb, rpc_
 	/* Get some general file system info */
         if (server->rpc_ops->fsinfo(server, &server->fh, &fsinfo) < 0) {
 		printk(KERN_NOTICE "NFS: cannot retrieve file system info.\n");
+		dput(sb->s_root);
+		root_inode = NULL;
 		goto out_no_root;
         }
 	if (server->namelen == 0 &&

_