Question on mutex code

Matthias Bonne lemonlime51 at gmail.com
Sun Mar 15 23:40:15 EDT 2015


On 03/16/15 00:10, Rabin Vincent wrote:
> On Sun, Mar 15, 2015 at 11:49:07PM +0200, Matthias Bonne wrote:
>> So the counter is set to 1 before taking the spinlock, which I think
>> might cause the race. Did I miss something?
>
> Yes, you miss the fact that __mutex_slowpath_needs_to_unlock() is 0 for
> the CONFIG_DEBUG_MUTEXES case:
>
>   #ifdef CONFIG_DEBUG_MUTEXES
>   # include "mutex-debug.h"
>   # include <asm-generic/mutex-null.h>
>   /*
>    * Must be 0 for the debug case so we do not do the unlock outside of the
>    * wait_lock region. debug_mutex_unlock() will do the actual unlock in this
>    * case.
>    */
>   # undef __mutex_slowpath_needs_to_unlock
>   # define  __mutex_slowpath_needs_to_unlock()	0
>

Right, I overlooked this part. Thanks to both of you for the
clarifications.



More information about the Kernelnewbies mailing list