Fix a race condition in bluesky_mmap_unref.
authorMichael Vrable <mvrable@cs.ucsd.edu>
Fri, 10 Dec 2010 17:12:50 +0000 (09:12 -0800)
committerMichael Vrable <mvrable@cs.ucsd.edu>
Fri, 10 Dec 2010 17:12:50 +0000 (09:12 -0800)
commit0e94ccdf181e154c366dc5169c970b149af000e5
treec777c8dc080651406aae0d8a1dd248fa0d4fa003
parent77511ae98a27a2db081b6e8b5374c4bf955b655f
Fix a race condition in bluesky_mmap_unref.

It turned out that the old code had a race--between decrementing and
testing the reference count and acquiring the lock, another thread could
potentially acquire a reference, release the reference, and then unmap the
data.  This still left the reference count as zero, so a second unmap was
attempted.  Now, use mmap->addr to detect if the unmap needs to be done or
not which should eliminate this race.
bluesky/log.c