diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2014-11-07 05:21:42 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2014-11-07 05:21:42 +0100 |
commit | a0e001a234796825f809e28c48880932b9e2aea9 (patch) | |
tree | 99a4fb6ea172323fc921a04528158caae3213310 /sys/src/9/port/devproc.c | |
parent | 20cc2799afd44ca156894fd96a1a72b61fc8a63a (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.c | 2 |
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); |