Re: Question on mutex code

From: Matthias Bonne
Date: Sun Mar 15 2015 - 23:40:37 EST


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.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/