--- //depot/projects/smpng/sys/kern/kern_rwlock.c 2007/03/30 20:11:26 +++ //depot/user/jhb/lock/kern/kern_rwlock.c 2007/03/30 22:24:04 @@ -660,6 +650,15 @@ _rw_assert(rw, RA_RLOCKED, file, line); /* + * If we have multiple readers, just fail without doing any + * atomic operations. + */ + if (RW_READERS(rw->rw_lock) > 1) { + success = 0; + goto out; + } + + /* * Attempt to switch from one reader to a writer. If there * are any write waiters, then we will have to lock the * turnstile first to prevent races with another writer