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