Date: Mon, 22 Apr 2002 07:02:48 -0500 From: "Jacques A. Vidrine" <nectar@FreeBSD.org> To: Bruce Evans <bde@zeta.org.au> Cc: alfred@FreeBSD.org, phk@FreeBSD.org, Maxim Konovalov <maxim@macomnet.ru>, freebsd-current@FreeBSD.org, Adrian Penisoara <ady@freebsd.ady.ro> Subject: Re: panic:bremfree with today's current and linux-netscape Message-ID: <20020422120247.GD68403@madman.nectar.cc> In-Reply-To: <20020422181848.G8032-100000@gamplex.bde.org> References: <20020421210807.T76833-100000@news1.macomnet.ru> <20020422181848.G8032-100000@gamplex.bde.org>
next in thread | previous in thread | raw e-mail | index | archive | help
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 <n@nectar.cc> http://www.nectar.cc/ NTT/Verio SME . FreeBSD UNIX . Heimdal Kerberos jvidrine@verio.net . nectar@FreeBSD.org . nectar@kth.se To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020422120247.GD68403>