Subject: Re: 4.99.16 (-current) panic
To: Gert Doering <gert@greenie.muc.de>
From: Antti Kantee <pooka@cs.hut.fi>
List: port-sparc64
Date: 04/09/2007 23:42:18
On Mon Apr 09 2007 at 22:19:34 +0200, Gert Doering wrote:
> > Ok, that's pretty obvious stuff.
> > 
> >         } else if (SCARG(uap, flags) & MNT_UPDATE) {
> >                 error = mount_update(l, vp, SCARG(uap, path),
> >                     SCARG(uap, flags), SCARG(uap, data), &nd);
> >                 vput(vp);
> > 
> > and (mount_update())
> > 
> >         /* We can't operate on VROOT here. */
> >         if ((vp->v_flag & VROOT) == 0) {
> >                 vput(vp);
> >                 error = EINVAL;
> >                 goto out;
> >         }
> 
> I need to believe that, if you say so :-)  (I find this quite non-obvious,
> to be honest :-) ).

Oh, sorry, I skipped the explanation here in my previous mail.
The problem was that the same vnode was unlocked and released twice due
to programming error.  This happened if mount -u (mount(2) with the flag
MNT_UPDATE) was done for a directory which is *not* the root directory
of a file system.

Also, the comment there is reversed.  It should say "we can operate only
on VROOT".

-- 
Antti Kantee <pooka@iki.fi>                     Of course he runs NetBSD
http://www.iki.fi/pooka/                          http://www.NetBSD.org/
    "la qualité la plus indispensable du cuisinier est l'exactitude"