From owner-freebsd-current Mon Apr 22 1:59:29 2002 Delivered-To: freebsd-current@freebsd.org Received: from mailman.zeta.org.au (mailman.zeta.org.au [203.26.10.16]) by hub.freebsd.org (Postfix) with ESMTP id 73D2937B423; Mon, 22 Apr 2002 01:59:23 -0700 (PDT) Received: from bde.zeta.org.au (bde.zeta.org.au [203.2.228.102]) by mailman.zeta.org.au (8.9.3/8.8.7) with ESMTP id SAA28755; Mon, 22 Apr 2002 18:24:30 +1000 Date: Mon, 22 Apr 2002 18:25:17 +1000 (EST) From: Bruce Evans X-X-Sender: bde@gamplex.bde.org To: Maxim Konovalov Cc: freebsd-current@FreeBSD.ORG, Adrian Penisoara , Subject: Re: panic:bremfree with today's current and linux-netscape In-Reply-To: <20020421210807.T76833-100000@news1.macomnet.ru> Message-ID: <20020422181848.G8032-100000@gamplex.bde.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG 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 :-). I think opening file descriptors on exec is wrong anyway. POSIX has close-on-exec but not open-on-exec. Bruce To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message