cvs commit: src/sys/kern kern_proc.c
Garrett Wollman
wollman at khavrinen.lcs.mit.edu
Wed Jun 9 16:29:51 GMT 2004
<<On Wed, 09 Jun 2004 18:20:00 +0200, "Poul-Henning Kamp" <phk at phk.freebsd.dk> said:
> The way to fix this is to make sure that the test for zero-ness
> is done on the result of our own decrement operation:
> LOCK(foo->lock)
> i = --foo->refcount;
> UNLOCK(foo->lock)
> if (i == 0)
> destroy(foo);
I think it's clearer if you write:
LOCK(foo->lock);
if (--foo->refcount == 0)
destroy(foo); /* expects a locked foo */
else
UNLOCK(foo);
...and also a bit harder to mess up in maintenance (particularly if
destroy() asserts that the lock is held).
-GAWollman
More information about the cvs-src
mailing list