<p dir="ltr"><br>
On 15-Mar-2016 7:19 pm, &quot;Cihangir Akturk&quot; &lt;<a href="mailto:cakturk@gmail.com">cakturk@gmail.com</a>&gt; wrote:<br>
&gt;<br>
&gt; On Thu, Mar 10, 2016 at 02:59:31PM +0530, Chetan Nanda wrote:<br>
&gt; &gt; Hi,<br>
&gt; &gt;<br>
&gt; &gt; As per book (Linux kernel development)<br>
&gt; &gt;<br>
&gt; &gt; &quot;Whoever locked a mutex must unlock it.That is, you cannot lock a mutex in one<br>
&gt; &gt; context and then unlock it in another<br>
&gt; &gt; &quot;<br>
&gt; &gt; but &#39;mutex_unlock&#39; code is not checking the owner field at all.<br>
&gt;<br>
&gt; If you look at the definition of mutex structure in mutex.h:50,<br>
&gt; you&#39;ll see that the owner field will be compiled in if one of<br>
&gt; CONFIG_DEBUG_MUTEXES or CONFIG_MUTEX_SPIN_ON_OWNER is defined.<br>
&gt;<br>
&gt; And debug_mutex_unlock function in mutex-debug.c:72 will check<br>
&gt; the owner and emits warning if it finds out that the mutex isn&#39;t<br>
&gt; unlocked by its owner.<br>
&gt;<br>
&gt; <a href="http://lxr.free-electrons.com/source/include/linux/mutex.h#L50">http://lxr.free-electrons.com/source/include/linux/mutex.h#L50</a><br>
&gt; <a href="http://lxr.free-electrons.com/source/kernel/locking/mutex-debug.c#L72">http://lxr.free-electrons.com/source/kernel/locking/mutex-debug.c#L72</a><br>
&gt;<br>
Thanks for your mail, in my kernel CONFIG_MUTEX_SPIN_ON_OWNER is enabled but CONFIG_DEBUG_MUTEX is not enabled. <br>
So there are no warning messages in logs. </p>
<p dir="ltr">Also,  it don&#39;t seems to be a real performance hit by adding a single check of owner with current in unlock code. <br>
&gt; &gt;<br>
&gt; &gt; Also, I tried with locking the mutex from normal process context and<br>
&gt; &gt; unlocking from separate context (work context) and it is allowed<br>
&gt; &gt; without any error from kernel.<br>
&gt; &gt;<br>
&gt; &gt; Is it the mutex user responsibility to keep track of it? Ideally<br>
&gt; &gt; mutex_unlock should check if owner is same as current?<br>
</p>