Re: Locking API testsuite: mixed read-lock/lock-write ABBA: |FAILED|

From: Peter Zijlstra
Date: Wed Oct 11 2017 - 14:50:21 EST


On Wed, Oct 11, 2017 at 11:28:25AM -0700, Jakub Kicinski wrote:
> I'm seeing a failure on net-next kernels (rc4):
>
> [ 0.000000] --------------------------------------------------------------------------
> [ 0.000000] recursive read-lock: | ok | | ok |
> [ 0.000000] recursive read-lock #2: | ok | | ok |
> [ 0.000000] mixed read-write-lock: | ok | | ok |
> [ 0.000000] mixed write-read-lock: | ok | | ok |
> [ 0.000000] mixed read-lock/lock-write ABBA: |FAILED| | ok |
> [ 0.000000] mixed read-lock/lock-read ABBA: | ok | | ok |
> [ 0.000000] mixed write-lock/lock-write ABBA: | ok | | ok |
> [ 0.000000] --------------------------------------------------------------------------
>
> Is this OK?


Yes,

commit e91498589746065e3ae95d9a00b068e525eec34f
Author: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
Date: Wed Aug 23 13:13:11 2017 +0200

locking/lockdep/selftests: Add mixed read-write ABBA tests

Currently lockdep has limited support for recursive readers, add a few
mixed read-write ABBA selftests to show the extend of these
limitations.

[ 0.000000] ----------------------------------------------------------------------------
[ 0.000000] | spin |wlock |rlock |mutex | wsem | rsem |
[ 0.000000] --------------------------------------------------------------------------

[ 0.000000] mixed read-lock/lock-write ABBA: |FAILED| | ok |
[ 0.000000] mixed read-lock/lock-read ABBA: | ok | | ok |
[ 0.000000] mixed write-lock/lock-write ABBA: | ok | | ok |

This clearly illustrates the case where lockdep fails to find a
deadlock.

Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx>
Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
Cc: boqun.feng@xxxxxxxxx
Cc: byungchul.park@xxxxxxx
Cc: david@xxxxxxxxxxxxx
Cc: johannes@xxxxxxxxxxxxxxxx
Cc: oleg@xxxxxxxxxx
Cc: tj@xxxxxxxxxx
Signed-off-by: Ingo Molnar <mingo@xxxxxxxxxx>