Date: Tue, 17 Dec 2013 13:37:02 +0000 (UTC) From: Attilio Rao <attilio@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r259509 - head/sys/kern Message-ID: <201312171337.rBHDb2Yx080943@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: attilio Date: Tue Dec 17 13:37:02 2013 New Revision: 259509 URL: http://svnweb.freebsd.org/changeset/base/259509 Log: - Assert for not leaking readers rw locks counter on userland return. - Use a correct spin_cnt for KDTRACE_HOOK case in rw read lock. Sponsored by: EMC / Isilon storage division Modified: head/sys/kern/kern_rwlock.c head/sys/kern/subr_trap.c Modified: head/sys/kern/kern_rwlock.c ============================================================================== --- head/sys/kern/kern_rwlock.c Tue Dec 17 13:18:41 2013 (r259508) +++ head/sys/kern/kern_rwlock.c Tue Dec 17 13:37:02 2013 (r259509) @@ -440,6 +440,9 @@ __rw_rlock(volatile uintptr_t *c, const break; cpu_spinwait(); } +#ifdef KDTRACE_HOOKS + spin_cnt += rowner_loops - i; +#endif if (i != rowner_loops) continue; } Modified: head/sys/kern/subr_trap.c ============================================================================== --- head/sys/kern/subr_trap.c Tue Dec 17 13:18:41 2013 (r259508) +++ head/sys/kern/subr_trap.c Tue Dec 17 13:37:02 2013 (r259509) @@ -152,6 +152,9 @@ userret(struct thread *td, struct trapfr ("userret: Returning in a critical section")); KASSERT(td->td_locks == 0, ("userret: Returning with %d locks held", td->td_locks)); + KASSERT(td->td_rw_rlocks == 0, + ("userret: Returning with %d rwlocks held in read mode", + td->td_rw_rlocks)); KASSERT((td->td_pflags & TDP_NOFAULTING) == 0, ("userret: Returning with pagefaults disabled")); KASSERT(td->td_no_sleeping == 0,
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201312171337.rBHDb2Yx080943>