mutexes: Give more informative mutex warning in the !lock->owner case
When mutex debugging is enabled and an imbalanced mutex_unlock() is called, we get the following, slightly confusing warning: [ 364.208284] DEBUG_LOCKS_WARN_ON(lock->owner != current) But in that case the warning is due to an imbalanced mutex_unlock() call, and the lock->owner is NULL - so the message is misleading. So improve the message by testing for this case specifically: DEBUG_LOCKS_WARN_ON(!lock->owner) Signed-off-by: Liu, Chuansheng <chuansheng.liu@intel.com> Signed-off-by: Peter Zijlstra <peterz@infradead.org> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Link: http://lkml.kernel.org/r/1386136693.3650.48.camel@cliu38-desktop-build [ Improved the changelog, changed the patch to use !lock->owner consistently. ] Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
		
							parent
							
								
									bb799d3b98
								
							
						
					
					
						commit
						91f30a1702
					
				| @ -75,7 +75,12 @@ void debug_mutex_unlock(struct mutex *lock) | ||||
| 		return; | ||||
| 
 | ||||
| 	DEBUG_LOCKS_WARN_ON(lock->magic != lock); | ||||
| 	DEBUG_LOCKS_WARN_ON(lock->owner != current); | ||||
| 
 | ||||
| 	if (!lock->owner) | ||||
| 		DEBUG_LOCKS_WARN_ON(!lock->owner); | ||||
| 	else | ||||
| 		DEBUG_LOCKS_WARN_ON(lock->owner != current); | ||||
| 
 | ||||
| 	DEBUG_LOCKS_WARN_ON(!lock->wait_list.prev && !lock->wait_list.next); | ||||
| 	mutex_clear_owner(lock); | ||||
| } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user