irrelevant locking

Vijay Singh vijju.singh at gmail.com
Sat Jan 16 22:09:00 UTC 2016


Couldn't the get & set race otherwise?
On Jan 16, 2016 12:27 PM, "Konstantin Belousov" <kostikbel at gmail.com> wrote:

> On Sat, Jan 16, 2016 at 10:58:19PM +0300, Chagin Dmitry wrote:
> > hi, please, can someone explain the reason to take the process lock here:
> There is no reason, I think that the PROC_LOCK() can be removed.
>
> >
> > int
> > sys_issetugid(register struct thread *td, struct issetugid_args *uap)
> > {
> >       struct proc *p = td->td_proc;
> >
> >       /*
> >        * Note: OpenBSD sets a P_SUGIDEXEC flag set at execve() time,
> >        * we use P_SUGID because we consider changing the owners as
> >        * "tainting" as well.
> >        * This is significant for procs that start as root and "become"
> >        * a user without an exec - programs cannot know *everything*
> >        * that libc *might* have put in their data segment.
> >        */
> >       PROC_LOCK(p);
> >       td->td_retval[0] = (p->p_flag & P_SUGID) ? 1 : 0;
> >       PROC_UNLOCK(p);
> >       return (0);
> > }
> _______________________________________________
> freebsd-hackers at freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe at freebsd.org"
>


More information about the freebsd-hackers mailing list