lockdep: Fix usage_traceoverflow
Basically print_lock_class_header()'s for loop is out of sync with the
the size of of ->usage_traces[].
Also clean things up a bit while at it, to avoid such mishaps in the future.
Fixes: 23870f1227 ("locking/lockdep: Fix "USED" <- "IN-NMI" inversions")
Reported-by: Qian Cai <cai@redhat.com>
Debugged-by: Boqun Feng <boqun.feng@gmail.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Tested-by: Qian Cai <cai@redhat.com>
Link: https://lkml.kernel.org/r/20200930094937.GE2651@hirez.programming.kicks-ass.net
			
			
This commit is contained in:
		
				
					committed by
					
						 Ingo Molnar
						Ingo Molnar
					
				
			
			
				
	
			
			
			
						parent
						
							583090b1b8
						
					
				
				
					commit
					2bb8945bcc
				
			| @@ -20,9 +20,12 @@ enum lock_usage_bit { | ||||
| #undef LOCKDEP_STATE | ||||
| 	LOCK_USED, | ||||
| 	LOCK_USED_READ, | ||||
| 	LOCK_USAGE_STATES | ||||
| 	LOCK_USAGE_STATES, | ||||
| }; | ||||
| 
 | ||||
| /* states after LOCK_USED_READ are not traced and printed */ | ||||
| static_assert(LOCK_TRACE_STATES == LOCK_USAGE_STATES); | ||||
| 
 | ||||
| #define LOCK_USAGE_READ_MASK 1 | ||||
| #define LOCK_USAGE_DIR_MASK  2 | ||||
| #define LOCK_USAGE_STATE_MASK (~(LOCK_USAGE_READ_MASK | LOCK_USAGE_DIR_MASK)) | ||||
| @@ -121,7 +124,7 @@ static const unsigned long LOCKF_USED_IN_IRQ_READ = | ||||
| extern struct list_head all_lock_classes; | ||||
| extern struct lock_chain lock_chains[]; | ||||
| 
 | ||||
| #define LOCK_USAGE_CHARS (1+LOCK_USAGE_STATES/2) | ||||
| #define LOCK_USAGE_CHARS (2*XXX_LOCK_USAGE_STATES + 1) | ||||
| 
 | ||||
| extern void get_usage_chars(struct lock_class *class, | ||||
| 			    char usage[LOCK_USAGE_CHARS]); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user