summaryrefslogtreecommitdiff
path: root/sys/src/9/port/devproc.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2014-11-07 05:21:42 +0100
committercinap_lenrek <cinap_lenrek@felloff.net>2014-11-07 05:21:42 +0100
commita0e001a234796825f809e28c48880932b9e2aea9 (patch)
tree99a4fb6ea172323fc921a04528158caae3213310 /sys/src/9/port/devproc.c
parent20cc2799afd44ca156894fd96a1a72b61fc8a63a (diff)
devproc: reset p->pdbg under p->debug qlock in procstopwait()
theres a race where procstopwait() is interrupted by a note, setting p->pdbg to nil *before* acquiering the lock and and pexit() and procctl() accessing it assuming it doesnt change under them while they are holding the lock.
Diffstat (limited to 'sys/src/9/port/devproc.c')
-rw-r--r--sys/src/9/port/devproc.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/src/9/port/devproc.c b/sys/src/9/port/devproc.c
index 42aa5bb12..93d92a10b 100644
--- a/sys/src/9/port/devproc.c
+++ b/sys/src/9/port/devproc.c
@@ -1258,8 +1258,8 @@ procstopwait(Proc *p, int ctl)
qunlock(&p->debug);
up->psstate = "Stopwait";
if(waserror()) {
- p->pdbg = nil;
qlock(&p->debug);
+ p->pdbg = nil;
nexterror();
}
sleep(&up->sleep, procstopped, p);