Messages in this thread | | | Subject | Re: [PATCH v2] locking/rwsem: Add DEBUG_RWSEMS to look for lock/unlock mismatches | From | Waiman Long <> | Date | Tue, 27 Mar 2018 16:37:34 -0400 |
| |
On 03/27/2018 03:56 PM, Ingo Molnar wrote: > * 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. Got it.
Thanks, Longman
| |