Linux emulation

Matthew Dillon dillon at
Fri Aug 8 14:51:03 PDT 2003

    All right, I've fixed 'man'.  It was primarily a bug in kern/kern_exec.c
    when I had combined the pcred and the ucred together.  The pcred was 
    always per-process and so the exec code could modify the svuid and svgid.

    But with everything combined in the ucred one has to call cratom() prior
    to modifying the svuid and svgid in order to not accidently modify
    the svuid/svgid belonging to other processes (since ucred can be shared
    across several processes).

    In the case of man it was fork()/exec()'ing the groff stuff and the exec
    in the child process was screwing up the svuid in the parent 'man'
    program, causing it to lose its ability to revert to the 'man' effective
    user id.


More information about the Kernel mailing list