Re: Unlock getpgrp(2)

Vitaliy Makkoveev <[email protected]>
Newsgroups gmane.os.openbsd.tech
Message-ID <[email protected]>
On Mon, Jun 08, 2026 at 09:57:07AM -0600, Theo de Raadt wrote:
> I don't see a problem with this.
> 

This is not the problem fix, just unlocking.

> Vitaliy Makkoveev <[email protected]> wrote:
> 
> > `ps_pgrp' is protected by both kernel lock and `ps_mtx' mutex, so only
> > one is enough for read only access. `pg_id' has the type of pid_t.
> > 
> > The corresponding enternewpgrp() sets `ps_pgrp' to the initialized new
> > one with both locks held.
> > 
> > Index: sys/kern/kern_prot.c
> > ===================================================================
> > RCS file: /cvs/src/sys/kern/kern_prot.c,v
> > diff -u -p -r1.84 kern_prot.c
> > --- sys/kern/kern_prot.c	3 Dec 2025 17:05:53 -0000	1.84
> > +++ sys/kern/kern_prot.c	8 Jun 2026 13:13:21 -0000
> > @@ -94,7 +94,9 @@ int
> >  sys_getpgrp(struct proc *p, void *v, register_t *retval)
> >  {
> >  
> > +	mtx_enter(&p->p_p->ps_mtx);
> >  	*retval = p->p_p->ps_pgrp->pg_id;
> > +	mtx_leave(&p->p_p->ps_mtx);
> >  	return (0);
> >  }
> >  
> > Index: sys/kern/syscalls.master
> > ===================================================================
> > RCS file: /cvs/src/sys/kern/syscalls.master,v
> > diff -u -p -r1.272 syscalls.master
> > --- sys/kern/syscalls.master	2 Jun 2026 21:46:21 -0000	1.272
> > +++ sys/kern/syscalls.master	8 Jun 2026 13:13:21 -0000
> > @@ -183,7 +183,7 @@
> >  			    gid_t *gidset); }
> >  80	STD		{ int sys_setgroups(int gidsetsize, \
> >  			    const gid_t *gidset); }
> > -81	STD		{ int sys_getpgrp(void); }
> > +81	STD NOLOCK	{ int sys_getpgrp(void); }
> >  82	STD		{ int sys_setpgid(pid_t pid, pid_t pgid); }
> >  83	STD NOLOCK	{ int sys_futex(uint32_t *f, int op, int val, \
> >  			    const struct timespec *timeout, uint32_t *g); }
> >
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.