From 7e099fd0a55aa4f7dfcf53fe0f00308880beceed Mon Sep 17 00:00:00 2001 From: Matheus Date: Wed, 22 May 2024 09:45:00 -0300 Subject: [PATCH] jobctl: fix group refcounting --- kernel-src/sys/jobctl.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/kernel-src/sys/jobctl.c b/kernel-src/sys/jobctl.c index 5b1fe52a..736bd2f2 100644 --- a/kernel-src/sys/jobctl.c +++ b/kernel-src/sys/jobctl.c @@ -174,11 +174,9 @@ int jobctl_newgroup(proc_t *proc) { bool intstatus = interrupt_set(false); spinlock_acquire(&proc->jobctllock); - // check if session/group leader - if (proc->pgrp.leader == NULL) { - error = EPERM; + // check if already group leader + if (proc->pgrp.leader == NULL) goto leave; - } unholdpgrp = proc->pgrp.leader; @@ -217,6 +215,7 @@ int jobctl_changegroup(proc_t *proc, proc_t *group) { removefromlist(proc->pgrp.leader, proc); unholdpgrp = proc->pgrp.leader; proc->pgrp.leader = group; + PROC_HOLD(group); addtolist(group, proc); leave: