On Mon, Apr 22, 2002 at 06:25:17PM +1000, Bruce Evans wrote:
> On Sun, 21 Apr 2002, Maxim Konovalov wrote:
> 
> > As Adrian Penisoara already reported
> >
> > http://docs.freebsd.org/cgi/getmsg.cgi?fetch=19645+0+current/freebsd-current
> >
> > there is panic in -current. I believe it is related to the next
> > commit:
> >
> > nectar      2002/04/18 17:45:29 PDT
> >
> >   Modified files:
> >     sys/kern             kern_descrip.c kern_exec.c
> >     sys/sys              filedesc.h
> >   Log:
> >   When exec'ing a set[ug]id program, make sure that the stdio file descriptors
> >   (0, 1, 2) are allocated by opening /dev/null for any which are not already
> >   open.
> >
> >   Reviewed by:    alfred, phk
> >   MFC after:      2 days
> >
> > Here is my workaround but I am not sure is it correct or not. Seems
> > falloc() takes care about locking itself.
> >
> > Index: src/sys/kern/kern_descrip.c
> > ===================================================================
> > RCS file: /home/ncvs/src/sys/kern/kern_descrip.c,v
> > retrieving revision 1.138
> > diff -u -r1.138 kern_descrip.c
> > --- src/sys/kern/kern_descrip.c     20 Apr 2002 12:02:52 -0000      1.138
> > +++ src/sys/kern/kern_descrip.c     21 Apr 2002 17:04:58 -0000
> > @@ -1528,9 +1528,7 @@
> >             if (fdp->fd_ofiles[i] != NULL)
> >                     continue;
> >             if (devnull < 0) {
> > -                   FILEDESC_LOCK(fdp);
> >                     error = falloc(td, &fp, &fd);
> > -                   FILEDESC_UNLOCK(fdp);
> >                     if (error != 0)
> >                             break;
> >                     NDINIT(&nd, LOOKUP, FOLLOW, UIO_SYSSPACE, "/dev/null",
> >
> > %%%
> 
> I use the same patch.  Locking here is essentially equivalent to calling
> panic() here (except it gives a more confusing panic message :-).

:-)  That's a bit of an overstatement; my testing didn't catch it.  I
do see that falloc does lock the file descriptor table too, though ---
I wonder how it ever worked.

Bouncing to the previous reviewers to make sure that this is the
correct fix.  Comments alfred, phk?  Oh, especially Alfred --- it
seems you committed the delta that added locking to the file
descriptor table.

Meanwhile I'll see if I can reproduce.  I wonder if interaction with
the linuxlator is required to tickle the bug.

> I think opening file descriptors on exec is wrong anyway.  POSIX has
> close-on-exec but not open-on-exec.

Cheers,
-- 
Jacques A. Vidrine <[EMAIL PROTECTED]>                 http://www.nectar.cc/
NTT/Verio SME          .     FreeBSD UNIX     .       Heimdal Kerberos
[EMAIL PROTECTED]     .  [EMAIL PROTECTED]  .          [EMAIL PROTECTED]

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to