On Mon, Oct 24, 2011 at 04:22:45PM +0200, Roman Divacky wrote:
> On Mon, Oct 24, 2011 at 01:53:32PM +0000, Konstantin Belousov wrote:
> > Author: kib
> > Date: Mon Oct 24 13:53:32 2011
> > New Revision: 226687
> > URL: http://svn.freebsd.org/changeset/base/226687
> > 
> > Log:
> >   The only possible error return from null_nodeget() is due to insmntque1
> >   failure (the getnewvnode cannot return an error). In this case, the
> >   null_insmntque_dtr() already unlocked the reclaimed vnode, so VOP_UNLOCK()
> >   in the nullfs_mount() after null_nodeget() failure is wrong.
> >   
> >   Tested by:        pho
> >   MFC after:        1 week
> > 
> > Modified:
> >   head/sys/fs/nullfs/null_vfsops.c
> > 
> > Modified: head/sys/fs/nullfs/null_vfsops.c
> > ==============================================================================
> > --- head/sys/fs/nullfs/null_vfsops.c        Mon Oct 24 13:48:13 2011        
> > (r226686)
> > +++ head/sys/fs/nullfs/null_vfsops.c        Mon Oct 24 13:53:32 2011        
> > (r226687)
> > @@ -157,7 +157,6 @@ nullfs_mount(struct mount *mp)
> >      * Make sure the node alias worked
> >      */
> >     if (error) {
> > -           VOP_UNLOCK(vp, 0);
> 
> Maybe you want to assert that it's indeed unlocked at this point?

No, I don't, since the vnode pointer is already invalid at this point.
The vput() call in dtr released the vnode reference owned by current
thread.

Attachment: pgpbc9pqDE9NH.pgp
Description: PGP signature

Reply via email to