owner not checked in mutex_unlock

Chetan Nanda chetannanda at gmail.com
Tue Mar 15 09:59:59 EDT 2016


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.

Also,  it don't seems to be a real performance hit by adding a single check
of owner with current in unlock code.
> >
> > Also, I tried with locking the mutex from normal process context and
> > unlocking from separate context (work context) and it is allowed
> > without any error from kernel.
> >
> > Is it the mutex user responsibility to keep track of it? Ideally
> > mutex_unlock should check if owner is same as current?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20160315/d4f447f7/attachment.html 


More information about the Kernelnewbies mailing list