mirror of
https://github.com/Mathewnd/Astral.git
synced 2026-11-01 15:08:21 +00:00
jobctl: fix group refcounting
This commit is contained in:
@@ -174,11 +174,9 @@ int jobctl_newgroup(proc_t *proc) {
|
|||||||
bool intstatus = interrupt_set(false);
|
bool intstatus = interrupt_set(false);
|
||||||
spinlock_acquire(&proc->jobctllock);
|
spinlock_acquire(&proc->jobctllock);
|
||||||
|
|
||||||
// check if session/group leader
|
// check if already group leader
|
||||||
if (proc->pgrp.leader == NULL) {
|
if (proc->pgrp.leader == NULL)
|
||||||
error = EPERM;
|
|
||||||
goto leave;
|
goto leave;
|
||||||
}
|
|
||||||
|
|
||||||
unholdpgrp = proc->pgrp.leader;
|
unholdpgrp = proc->pgrp.leader;
|
||||||
|
|
||||||
@@ -217,6 +215,7 @@ int jobctl_changegroup(proc_t *proc, proc_t *group) {
|
|||||||
removefromlist(proc->pgrp.leader, proc);
|
removefromlist(proc->pgrp.leader, proc);
|
||||||
unholdpgrp = proc->pgrp.leader;
|
unholdpgrp = proc->pgrp.leader;
|
||||||
proc->pgrp.leader = group;
|
proc->pgrp.leader = group;
|
||||||
|
PROC_HOLD(group);
|
||||||
addtolist(group, proc);
|
addtolist(group, proc);
|
||||||
|
|
||||||
leave:
|
leave:
|
||||||
|
|||||||
Reference in New Issue
Block a user