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