owner not checked in mutex_unlock

Cihangir Akturk cakturk at gmail.com
Tue Mar 15 10:42:10 EDT 2016


On Tue, Mar 15, 2016 at 07:29:59PM +0530, Chetan Nanda wrote:
> On 15-Mar-2016 7:19 pm, "Cihangir Akturk" <cakturk at gmail.com> wrote:
> >
> > On Thu, Mar 10, 2016 at 02:59:31PM +0530, Chetan Nanda wrote:
> > > Hi,
> > >
> > > As per book (Linux kernel development)
> > >
> > > "Whoever locked a mutex must unlock it.That is, you cannot lock a mutex
> in one
> > > context and then unlock it in another
> > > "
> > > but 'mutex_unlock' code is not checking the owner field at all.
> >
> > If you look at the definition of mutex structure in mutex.h:50,
> > you'll see that the owner field will be compiled in if one of
> > CONFIG_DEBUG_MUTEXES or CONFIG_MUTEX_SPIN_ON_OWNER is defined.
> >
> > And debug_mutex_unlock function in mutex-debug.c:72 will check
> > the owner and emits warning if it finds out that the mutex isn't
> > unlocked by its owner.
> >
> > http://lxr.free-electrons.com/source/include/linux/mutex.h#L50
> > http://lxr.free-electrons.com/source/kernel/locking/mutex-debug.c#L72
> >
> Thanks for your mail, in my kernel CONFIG_MUTEX_SPIN_ON_OWNER is enabled
> but CONFIG_DEBUG_MUTEX is not enabled.
> So there are no warning messages in logs.

I am not an expert but this might be related to debug_locks variable
defined in http://lxr.free-electrons.com/source/lib/debug_locks.c#L24

> 
> Also,  it don't seems to be a real performance hit by adding a single check
> of owner with current in unlock code.



More information about the Kernelnewbies mailing list