diff options
| author | Ingo Molnar <mingo@elte.hu> | 2005-12-20 11:54:17 +0100 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-12-20 10:47:55 -0800 | 
| commit | bb44f116a14c4c932f15c79acfafd46bcb43ca9a (patch) | |
| tree | d8f5dc090cef75f22e7ca152298096bb2877b6b8 /lib | |
| parent | 391eadeec836463a4e6e3843953bbe40f6522593 (diff) | |
| download | olio-linux-3.10-bb44f116a14c4c932f15c79acfafd46bcb43ca9a.tar.xz olio-linux-3.10-bb44f116a14c4c932f15c79acfafd46bcb43ca9a.zip  | |
[PATCH] fix spinlock-debugging smp_processor_id() usage
When a spinlock debugging check hits, we print the CPU number as an
informational thing - but there is no guarantee that preemption is off
at that point - hence we should use raw_smp_processor_id().  Otherwise
DEBUG_PREEMPT will print a warning.
With this fix the warning goes away and only the spinlock-debugging info
is printed.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/spinlock_debug.c | 18 | 
1 files changed, 10 insertions, 8 deletions
diff --git a/lib/spinlock_debug.c b/lib/spinlock_debug.c index 906ad101eab..dcd4be9bd4e 100644 --- a/lib/spinlock_debug.c +++ b/lib/spinlock_debug.c @@ -20,7 +20,8 @@ static void spin_bug(spinlock_t *lock, const char *msg)  		if (lock->owner && lock->owner != SPINLOCK_OWNER_INIT)  			owner = lock->owner;  		printk("BUG: spinlock %s on CPU#%d, %s/%d\n", -			msg, smp_processor_id(), current->comm, current->pid); +			msg, raw_smp_processor_id(), +			current->comm, current->pid);  		printk(" lock: %p, .magic: %08x, .owner: %s/%d, .owner_cpu: %d\n",  			lock, lock->magic,  			owner ? owner->comm : "<none>", @@ -78,8 +79,8 @@ static void __spin_lock_debug(spinlock_t *lock)  		if (print_once) {  			print_once = 0;  			printk("BUG: spinlock lockup on CPU#%d, %s/%d, %p\n", -				smp_processor_id(), current->comm, current->pid, -					lock); +				raw_smp_processor_id(), current->comm, +				current->pid, lock);  			dump_stack();  		}  	} @@ -120,7 +121,8 @@ static void rwlock_bug(rwlock_t *lock, const char *msg)  	if (xchg(&print_once, 0)) {  		printk("BUG: rwlock %s on CPU#%d, %s/%d, %p\n", msg, -			smp_processor_id(), current->comm, current->pid, lock); +			raw_smp_processor_id(), current->comm, +			current->pid, lock);  		dump_stack();  #ifdef CONFIG_SMP  		/* @@ -148,8 +150,8 @@ static void __read_lock_debug(rwlock_t *lock)  		if (print_once) {  			print_once = 0;  			printk("BUG: read-lock lockup on CPU#%d, %s/%d, %p\n", -				smp_processor_id(), current->comm, current->pid, -					lock); +				raw_smp_processor_id(), current->comm, +				current->pid, lock);  			dump_stack();  		}  	} @@ -220,8 +222,8 @@ static void __write_lock_debug(rwlock_t *lock)  		if (print_once) {  			print_once = 0;  			printk("BUG: write-lock lockup on CPU#%d, %s/%d, %p\n", -				smp_processor_id(), current->comm, current->pid, -					lock); +				raw_smp_processor_id(), current->comm, +				current->pid, lock);  			dump_stack();  		}  	}  |