owner not checked in mutex_unlock
Cihangir Akturk
cakturk at gmail.com
Tue Mar 15 09:48:57 EDT 2016
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
>
> 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?
More information about the Kernelnewbies
mailing list