]> git.neil.brown.name Git - history.git/commitdiff
[PATCH] nfsd: deleting symlinks over nfs causes oops on unmount
authorAndrew Morton <akpm@osdl.org>
Thu, 27 May 2004 00:36:46 +0000 (17:36 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Thu, 27 May 2004 00:36:46 +0000 (17:36 -0700)
From: "J. Bruce Fields" <bfields@fieldses.org>
From: Neil Brown <neilb@cse.unsw.edu.au>

This fixes an oops on unmount (failure of the assertation at
fs/ext3/super.c:421).  Probably reproduceable just by creating and deleting a
single symlink over nfs and then unmounting the exported filesystem.

Recent change to fh_compose means dentry reference is *not* consumed, and so
usually has to be explicitly dput afterwards.  One usage was missed in that
patch, so this dput is needed.

Signed-off-by: Andrew Morton <akpm@osdl.org>
fs/nfsd/vfs.c

index 2010c432c51df72e936baa2ee83c82ef62340d73..bd4ff828074eee72bedc07747bd007f7d1e3f1f9 100644 (file)
@@ -1228,8 +1228,8 @@ nfsd_symlink(struct svc_rqst *rqstp, struct svc_fh *fhp,
                err = nfserrno(err);
        fh_unlock(fhp);
 
-       /* Compose the fh so the dentry will be freed ... */
        cerr = fh_compose(resfhp, fhp->fh_export, dnew, fhp);
+       dput(dnew);
        if (err==0) err = cerr;
 out:
        return err;