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 [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to