[Devel] [patch] cbt: selfdeadlock in __blk_cbt_set()

Vasiliy Averin vvs at virtuozzo.com
Thu Oct 11 16:34:10 MSK 2018


__blk_cbt_set() can be interrupted by IPI __cbt_flush_cpu_cache() 
that will be cycled forever in spin_lock_page()
because page was already locked by interrupted process.

 #5 [ffff880071e89f50] nmi at ffffffff81569781
    [exception RIP: __blk_cbt_set+133]
    RIP: ffffffff812b1a35  RSP: ffff880071e83ef8  RFLAGS: 00000087
    RAX: 0000000000000001  RBX: 00000000004a0020  RCX: 00000000ffffffff
    RDX: 0000000000000020  RSI: 00000000004a0020  RDI: ffffea007d13d9c0
    RBP: ffff880071e83f38   R8: 0000000000fa0001   R9: 00000000ffffffff
    R10: 0000000000000008  R11: 0000000000000044  R12: ffff880f0b08cbc0
    R13: 0000000000000001  R14: 0000000000000001  R15: 0000000000000094
    ORIG_RAX: ffffffffffffffff  CS: 0010  SS: 0018
--- <NMI exception stack> ---
 #6 [ffff880071e83ef8] __blk_cbt_set at ffffffff812b1a35
 #7 [ffff880071e83f40] __cbt_flush_cpu_cache at ffffffff812b1c92
 #8 [ffff880071e83f60] generic_smp_call_function_interrupt at ffffffff810dab72
 #9 [ffff880071e83fa0] smp_call_function_interrupt at ffffffff8103950d
#10 [ffff880071e83fb0] call_function_interrupt at ffffffff81571423
--- <IRQ stack> ---
#11 [ffff88101045f678] call_function_interrupt at ffffffff81571423
    [exception RIP: __blk_cbt_set+297]
    RIP: ffffffff812b1ad9  RSP: ffff88101045f720  RFLAGS: 00000202
    RAX: 0000000000000002  RBX: ffff88101045f760  RCX: ffff881f44f67000
    RDX: 000000000000001f  RSI: 0000000000000021  RDI: ffffea007d13d9c0
    RBP: ffffffff8157141e   R8: 0000000000fa0001   R9: 00000000ffffffff
    R10: 0000000000000008  R11: 0000000000000044  R12: 0000000000000086
    R13: ffff8810697ac158  R14: ffff88101045f6b0  R15: 0000000100000001
    ORIG_RAX: ffffffffffffff03  CS: 0010  SS: 0018
#12 [ffff88101045f768] blk_cbt_bio_queue at ffffffff812b1d59
#13 [ffff88101045f778] generic_make_request at ffffffff8129412d
#14 [ffff88101045f838] submit_bio at ffffffff812944e1
#15 [ffff88101045f8a8] submit_bh at ffffffff81202f9d
...

Patch disables interrupts before access to spin_lock_page().

https://jira.sw.ru/browse/PSBM-89323
Signed-off-by: Vasily Averin <vvs at virtuozzo.com>

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: diff-cbt-selfdeadlock-in-__blk_cbt_set
URL: <http://lists.openvz.org/pipermail/devel/attachments/20181011/95e03c48/attachment.ksh>


More information about the Devel mailing list