diff options
Diffstat (limited to 'kernel/lockdep.c')
-rw-r--r-- | kernel/lockdep.c | 17 |
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 | */ |
2176 | void trace_hardirqs_on_caller(unsigned long a0) | 2176 | void 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 | */ |
2231 | void trace_hardirqs_off_caller(unsigned long a0) | 2229 | void 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 | /* |