Home
last modified time | relevance | path

Searched hist:"10476 e6304222ced7df9b3d5fb0a043b3c2a1ad8" (Results 1 – 1 of 1) sorted by relevance

/linux/kernel/locking/
H A Dlockdep.cdiff 10476e6304222ced7df9b3d5fb0a043b3c2a1ad8 Fri Mar 13 09:56:38 CET 2020 Peter Zijlstra <peterz@infradead.org> locking/lockdep: Fix bad recursion pattern

There were two patterns for lockdep_recursion:

Pattern-A:
if (current->lockdep_recursion)
return

current->lockdep_recursion = 1;
/* do stuff */
current->lockdep_recursion = 0;

Pattern-B:
current->lockdep_recursion++;
/* do stuff */
current->lockdep_recursion--;

But a third pattern has emerged:

Pattern-C:
current->lockdep_recursion = 1;
/* do stuff */
current->lockdep_recursion = 0;

And while this isn't broken per-se, it is highly dangerous because it
doesn't nest properly.

Get rid of all Pattern-C instances and shore up Pattern-A with a
warning.

Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lkml.kernel.org/r/20200313093325.GW12561@hirez.programming.kicks-ass.net