From 163dccbac04a3c9ab132005ebb4a96a0e0baec0b Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Tue, 14 Mar 2017 19:32:20 +0100 Subject: upas/fs: make sure mbox is locked during msgdecref() in rclunk() --- sys/src/cmd/upas/fs/fs.c | 14 +++++++------- 1 file 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); -- cgit v1.2.3