]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/commit
MFC 287833:
authorjhb <jhb@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Tue, 6 Oct 2015 22:28:28 +0000 (22:28 +0000)
committerjhb <jhb@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Tue, 6 Oct 2015 22:28:28 +0000 (22:28 +0000)
commit743623f95ec299a5ffa6747711cf3c002e8ce6b3
treeb782905644a30cef9fd5bc113840ff6bfaa43e0a
parentbf40cf24a4c6bf8e0bd28909a09de14d02eb9c37
MFC 287833:
Threads holding a read lock of a sleepable rm lock are not permitted
to sleep.  The rmlock implementation enforces this by disabling
sleeping when a read lock is acquired. To simplify the implementation,
sleeping is disabled for most of the duration of rm_rlock.  However,
it doesn't need to be disabled until the lock is acquired.  If a
sleepable rm lock is contested, then rm_rlock may need to acquire the
backing sx lock.  This tripped the overly-broad assertion.  Fix by
relaxing the assertion around the call to sx_xlock().

git-svn-id: svn://svn.freebsd.org/base/stable/10@288958 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
sys/kern/kern_rmlock.c