shithub: riscv

Download patch

ref: 5a5d3e0414f733c69fb43399972a81d465c08555
parent: 1dcf853fc0439e7726d3a3f10678b1340b3592e5
author: cinap_lenrek <[email protected]>
date: Thu Nov 22 03:49:41 EST 2018

upas/fs: allow msgincref() with mb->refs == 0

this can happen when the on the final sync when the mailbox
is being freed:

freembox -> mboxdecref -> syncmbox -> wridxfile -> pridx -> insurecache -> msgincref

--- a/sys/src/cmd/upas/fs/mbox.c
+++ b/sys/src/cmd/upas/fs/mbox.c
@@ -1124,7 +1124,7 @@
 void
 msgincref(Mailbox *mb, Message *m)
 {
-	assert(mb->refs > 0);
+	assert(mb->refs >= 0);
 	for(;; m = m->whole){
 		assert(m->refs >= 0);
 		m->refs++;