cvs commit: src/sys/kern kern_proc.c
Poul-Henning Kamp
phk at phk.freebsd.dk
Wed Jun 9 09:33:08 GMT 2004
In message <200406090929.i599T8h6065944 at repoman.freebsd.org>, Poul-Henning Kamp
writes:
>
> Modified files:
> sys/kern kern_proc.c
> Log:
> Fix a race in destruction of sessions.
Not to pick on anybody, but this is a perfect example of getting locking
almost right:
BAD:
LOCK(foo->lock)
foo->refcount--;
UNLOCK(foo->lock)
if (foo->refcount == 0)
destroy(foo);
GOOD:
LOCK(foo->lock)
i = --foo->refcount;
UNLOCK(foo->lock)
if (i == 0)
destroy(foo);
--
Poul-Henning Kamp | UNIX since Zilog Zeus 3.20
phk at FreeBSD.ORG | TCP/IP since RFC 956
FreeBSD committer | BSD since 4.3-tahoe
Never attribute to malice what can adequately be explained by incompetence.
More information about the cvs-src
mailing list