Skip to content

Commit

Permalink
lockdep: Fix redundant_hardirqs_on incremented with irqs enabled
Browse files Browse the repository at this point in the history
When a path restore the flags while irqs are already enabled, we
update the per cpu var redundant_hardirqs_on in a racy fashion
and debug_atomic_inc() warns about this situation.

In this particular case, loosing a few hits in a stat is not a big
deal, so increment it without protection.

v2: Don't bother with disabling irq, we can miss one count in
    rare situations

Reported-by: Stephen Rothwell <[email protected]>
Signed-off-by: Frederic Weisbecker <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: David Miller <[email protected]>
Cc: Benjamin Herrenschmidt <[email protected]>
  • Loading branch information
fweisbec committed Apr 30, 2010
1 parent 868c522 commit 8795d77
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion kernel/lockdep.c
Original file line number Diff line number Diff line change
Expand Up @@ -2298,7 +2298,12 @@ void trace_hardirqs_on_caller(unsigned long ip)
return;

if (unlikely(curr->hardirqs_enabled)) {
debug_atomic_inc(redundant_hardirqs_on);
/*
* Neither irq nor preemption are disabled here
* so this is racy by nature but loosing one hit
* in a stat is not a big deal.
*/
this_cpu_inc(lockdep_stats.redundant_hardirqs_on);
return;
}
/* we'll do an OFF -> ON transition: */
Expand Down

0 comments on commit 8795d77

Please sign in to comment.