-/* $OpenBSD: kern_proc.c,v 1.100 2024/10/15 13:49:26 claudio Exp $ */
+/* $OpenBSD: kern_proc.c,v 1.101 2024/10/22 11:54:04 claudio Exp $ */
/* $NetBSD: kern_proc.c,v 1.14 1996/02/09 18:59:41 christos Exp $ */
/*
fixjobc(pr, savepgrp, 0);
LIST_REMOVE(pr, ps_pglist);
+ mtx_enter(&pr->ps_mtx);
pr->ps_pgrp = pgrp;
+ mtx_leave(&pr->ps_mtx);
LIST_INSERT_HEAD(&pgrp->pg_members, pr, ps_pglist);
if (LIST_EMPTY(&savepgrp->pg_members))
pgdelete(savepgrp);
LIST_REMOVE(pr, ps_pglist);
if (LIST_EMPTY(&pr->ps_pgrp->pg_members))
pgdelete(pr->ps_pgrp);
+ mtx_enter(&pr->ps_mtx);
pr->ps_pgrp = NULL;
+ mtx_leave(&pr->ps_mtx);
}
/*
-/* $OpenBSD: kern_sig.c,v 1.343 2024/10/17 09:11:35 claudio Exp $ */
+/* $OpenBSD: kern_sig.c,v 1.344 2024/10/22 11:54:04 claudio Exp $ */
/* $NetBSD: kern_sig.c,v 1.54 1996/04/22 01:38:32 christos Exp $ */
/*
* process group, ignore tty stop signals.
*/
if (prop & SA_STOP) {
+ mtx_enter(&pr->ps_mtx);
if (pr->ps_flags & PS_TRACED ||
(pr->ps_pgrp->pg_jobc == 0 &&
- prop & SA_TTYSTOP))
+ prop & SA_TTYSTOP)) {
+ mtx_leave(&pr->ps_mtx);
break; /* == ignore */
+ }
+ mtx_leave(&pr->ps_mtx);
pr->ps_xsig = signum;
SCHED_LOCK();
proc_stop(p, 1);
-/* $OpenBSD: proc.h,v 1.375 2024/10/15 13:49:26 claudio Exp $ */
+/* $OpenBSD: proc.h,v 1.376 2024/10/22 11:54:05 claudio Exp $ */
/* $NetBSD: proc.h,v 1.44 1996/04/22 01:23:21 christos Exp $ */
/*-
/* The following fields are all copied upon creation in process_new. */
#define ps_startcopy ps_limit
struct plimit *ps_limit; /* [m,R] Process limits. */
- struct pgrp *ps_pgrp; /* Pointer to process group. */
+ struct pgrp *ps_pgrp; /* [K|m] Pointer to process group. */
char ps_comm[_MAXCOMLEN]; /* command name, incl NUL */