summaryrefslogtreecommitdiff
path: root/sys/src/cmd/upas
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2017-03-14 19:32:20 +0100
committercinap_lenrek <cinap_lenrek@felloff.net>2017-03-14 19:32:20 +0100
commit163dccbac04a3c9ab132005ebb4a96a0e0baec0b (patch)
treeeb11e2920d6f9f467ad085e91e82fb36bffe73d2 /sys/src/cmd/upas
parentd18440d992243c8e2f5a866d074a597c1a03754f (diff)
upas/fs: make sure mbox is locked during msgdecref() in rclunk()
Diffstat (limited to 'sys/src/cmd/upas')
-rw-r--r--sys/src/cmd/upas/fs/fs.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/sys/src/cmd/upas/fs/fs.c b/sys/src/cmd/upas/fs/fs.c
index 2b399ac3c..e34cfa25e 100644
--- a/sys/src/cmd/upas/fs/fs.c
+++ b/sys/src/cmd/upas/fs/fs.c
@@ -1442,17 +1442,17 @@ sanefid(f);
/* coherence(); */
f->fid = -1;
f->open = 0;
- if(f->mtop){
- qlock(f->mb);
- msgdecref(f->mb, f->mtop);
- qunlock(f->mb);
- }
+ mb = f->mb;
+ if(mb != nil)
+ qlock(mb);
+ if(f->mtop)
+ msgdecref(mb, f->mtop);
if(f->m)
- msgdecref(f->mb, gettopmsg(f->mb, f->m));
+ msgdecref(mb, gettopmsg(mb, f->m));
f->m = f->mtop = nil;
- mb = f->mb;
if(mb != nil){
f->mb = nil;
+ qunlock(mb);
assert(mb->refs > 0);
qlock(&mbllock);
mboxdecref(mb);