Searched hist:"10476 e6304222ced7df9b3d5fb0a043b3c2a1ad8" (Results 1 – 1 of 1) sorted by relevance
/linux/kernel/locking/ |
H A D | lockdep.c | diff 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
|