Messages in this thread | | | Date | Tue, 27 Mar 2018 21:56:39 +0200 | From | Ingo Molnar <> | Subject | Re: [PATCH v2] locking/rwsem: Add DEBUG_RWSEMS to look for lock/unlock mismatches |
| |
* Waiman Long <longman@redhat.com> wrote:
> On 03/27/2018 02:06 AM, Ingo Molnar wrote: > > * Waiman Long <longman@redhat.com> wrote: > > > >> For a rwsem, locking can either be exclusive or shared. The corresponding > >> exclusive or shared unlock must be used. Otherwise, the protected data > >> structures may get corrupted or the lock may be in an inconsistent state. > >> > >> In order to detect such anomaly, a new configuration option DEBUG_RWSEMS > >> is added which can be enabled to look for such mismatches and print > >> warnings that that happens. > >> diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug > >> index 64155e3..0958192 100644 > >> --- a/lib/Kconfig.debug > >> +++ b/lib/Kconfig.debug > >> @@ -1075,6 +1075,13 @@ config DEBUG_WW_MUTEX_SLOWPATH > >> even a debug kernel. If you are a driver writer, enable it. If > >> you are a distro, do not. > >> > >> +config DEBUG_RWSEMS > >> + bool "RW Semaphore debugging: basic checks" > >> + depends on DEBUG_KERNEL && RWSEM_SPIN_ON_OWNER > >> + help > >> + This feature allows mismatched rw semaphore locks and unlocks > >> + to be detected and reported. > >> + > > Makes sense - but this should also be integrated into the rest of lock debugging > > Kconfig hierarchy similar to DEBUG_MUTEXES: i.e. DEBUG_LOCK_ALLOC, PROVE_LOCKING, > > etc. should select this new lock debugging option as well. > > > > People generally are not supposed to know and configure the finer details, > > CONFIG_LOCK_DEBUGGING=y is a one-stop-shop in this regard. > > I can add a patch to rework lock debugging configuration code. Do you > want to hide the individual config options but still allow them to be > enabled manually? Alternatively we can also just add a master lock > debugging option to select them all.
They should work like mutex debugging: it's auto-selected by PROVE_LOCKING, but can be enabled individually as well if PROVE_LOCKING is disabled.
Thanks,
Ingo
| |