[lockdep] chain_key collision check triggers

From: Heiko Carstens
Date: Fri Jun 03 2016 - 03:16:05 EST


Hi all,

the new lockdep chain_key collision detection code triggers quite reliably
on s390, so it looks like we need a different iterate_chain_key()
implementation?

Actually there was already another report from Shuah Khan, which didn't get
any replies as far as I can tell:
https://lkml.org/lkml/2016/4/12/1080

Anyway, these are the chains on s390 which collided:

[ 9550.753790] ======================
[ 9550.753791] [chain_key collision ]
[ 9550.753793] 4.6.0-02644-gbf82442b7914 #2 Tainted: G W
[ 9550.753795] ----------------------
[ 9550.753796] crond/2973: Hash chain already cached but the contents don't match!
[ 9550.753798] Held locks:depth: 6
[ 9550.753800] class_idx:925 -> chain_key:000000000000039d (&sig->cred_guard_mutex){+.+.+.}, at: [<0000000000346bb4>] prepare_bprm_creds+0x44/0x98
[ 9550.753807] class_idx:944 -> chain_key:000000000073a3b0 (sb_writers#3){.+.+.+}, at: [<0000000000360aa2>] touch_atime+0x5a/0xd8
[ 9550.753814] class_idx:1064 -> chain_key:0000000e74760428 (jbd2_handle){+.+...}, at: [<0000000000442a20>] start_this_handle+0x470/0x558
[ 9550.753823] class_idx:843 -> chain_key:0001ce8ec085034b (&(&block->request_queue_lock)->rlock){..-.-.}, at: [<0000000000686c12>] blk_queue_bio+0x582/0x608
[ 9550.753830] class_idx:842 -> chain_key:39d1d810a069634a (&(&block->queue_lock)->rlock){+.-.-.}, at: [<00000000007df038>] do_dasd_request+0x38/0x60
[ 9550.753836] class_idx:850 -> chain_key:3b02140d2c694468 (dasd_global_profile.lock){..-.-.}, at: [<00000000007deeb8>] __dasd_process_request_queue+0x2a0/0x3e8
[ 9550.753841] Locks in cached chain:depth: 6
[ 9550.753844] class_idx:926 -> chain_key:000000000000039e (&type->i_mutex_dir_key){+.+.+.}
[ 9550.753848] class_idx:944 -> chain_key:000000000073c3b0 (sb_writers#3){.+.+.+}
[ 9550.753852] class_idx:1064 -> chain_key:0000000e78760428 (jbd2_handle){+.+...}
[ 9550.753857] class_idx:843 -> chain_key:0001cf0ec085034b (&(&block->request_queue_lock)->rlock){..-.-.}
[ 9550.753861] class_idx:842 -> chain_key:39e1d810a069634a (&(&block->queue_lock)->rlock){+.-.-.}
[ 9550.753865] class_idx:852 -> chain_key:3b02140d2c694468 (&(&device->profile.lock)->rlock){..-.-.}