aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/lockdep.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2008-11-12 06:39:21 -0500
committerIngo Molnar <mingo@elte.hu>2008-11-12 06:39:21 -0500
commit708b8eae0fd532af73ea8350e6dcc10255ff7376 (patch)
treef336436934fd79bc91aff7112a9beb10bc4e839f /kernel/lockdep.c
parentd98d38f2014ab79f28c126ff175d034891f7aefc (diff)
parentf21f237cf55494c3a4209de323281a3b0528da10 (diff)
Merge branch 'linus' into core/locking
Diffstat (limited to 'kernel/lockdep.c')
-rw-r--r--kernel/lockdep.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/kernel/lockdep.c b/kernel/lockdep.c
index 234a9dccb4be..a42858303233 100644
--- a/kernel/lockdep.c
+++ b/kernel/lockdep.c
@@ -2173,12 +2173,11 @@ void early_boot_irqs_on(void)
2173/* 2173/*
2174 * Hardirqs will be enabled: 2174 * Hardirqs will be enabled:
2175 */ 2175 */
2176void trace_hardirqs_on_caller(unsigned long a0) 2176void trace_hardirqs_on_caller(unsigned long ip)
2177{ 2177{
2178 struct task_struct *curr = current; 2178 struct task_struct *curr = current;
2179 unsigned long ip;
2180 2179
2181 time_hardirqs_on(CALLER_ADDR0, a0); 2180 time_hardirqs_on(CALLER_ADDR0, ip);
2182 2181
2183 if (unlikely(!debug_locks || current->lockdep_recursion)) 2182 if (unlikely(!debug_locks || current->lockdep_recursion))
2184 return; 2183 return;
@@ -2192,7 +2191,6 @@ void trace_hardirqs_on_caller(unsigned long a0)
2192 } 2191 }
2193 /* we'll do an OFF -> ON transition: */ 2192 /* we'll do an OFF -> ON transition: */
2194 curr->hardirqs_enabled = 1; 2193 curr->hardirqs_enabled = 1;
2195 ip = (unsigned long) __builtin_return_address(0);
2196 2194
2197 if (DEBUG_LOCKS_WARN_ON(!irqs_disabled())) 2195 if (DEBUG_LOCKS_WARN_ON(!irqs_disabled()))
2198 return; 2196 return;
@@ -2228,11 +2226,11 @@ EXPORT_SYMBOL(trace_hardirqs_on);
2228/* 2226/*
2229 * Hardirqs were disabled: 2227 * Hardirqs were disabled:
2230 */ 2228 */
2231void trace_hardirqs_off_caller(unsigned long a0) 2229void trace_hardirqs_off_caller(unsigned long ip)
2232{ 2230{
2233 struct task_struct *curr = current; 2231 struct task_struct *curr = current;
2234 2232
2235 time_hardirqs_off(CALLER_ADDR0, a0); 2233 time_hardirqs_off(CALLER_ADDR0, ip);
2236 2234
2237 if (unlikely(!debug_locks || current->lockdep_recursion)) 2235 if (unlikely(!debug_locks || current->lockdep_recursion))
2238 return; 2236 return;
@@ -2245,7 +2243,7 @@ void trace_hardirqs_off_caller(unsigned long a0)
2245 * We have done an ON -> OFF transition: 2243 * We have done an ON -> OFF transition:
2246 */ 2244 */
2247 curr->hardirqs_enabled = 0; 2245 curr->hardirqs_enabled = 0;
2248 curr->hardirq_disable_ip = _RET_IP_; 2246 curr->hardirq_disable_ip = ip;
2249 curr->hardirq_disable_event = ++curr->irq_events; 2247 curr->hardirq_disable_event = ++curr->irq_events;
2250 debug_atomic_inc(&hardirqs_off_events); 2248 debug_atomic_inc(&hardirqs_off_events);
2251 } else 2249 } else
@@ -3426,9 +3424,10 @@ retry:
3426 } 3424 }
3427 printk(" ignoring it.\n"); 3425 printk(" ignoring it.\n");
3428 unlock = 0; 3426 unlock = 0;
3427 } else {
3428 if (count != 10)
3429 printk(KERN_CONT " locked it.\n");
3429 } 3430 }
3430 if (count != 10)
3431 printk(" locked it.\n");
3432 3431
3433 do_each_thread(g, p) { 3432 do_each_thread(g, p) {
3434 /* 3433 /*