IPI generated by cbt_flush_cache() can interrupt blk_cbt_add() in "bad" places
and lead to bitmap corruption.
CPU A CPU B
blk_cbt_add()
... cbt_flush_cache()
old = *ex;submit IPI
ex->start = start;
interrupt
__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 [880071e89f50] nmi at 81569781
[exception RIP: __blk_cbt_set+133]
RIP: 812b1a35 RSP:
IPI generated by cbt_flush_cache() can interrupt blk_cbt_add() in "bad" places
and lead to bitmap corruption.
CPU A CPU B
blk_cbt_add()
... cbt_flush_cache()
old = *ex;submit IPI
ex->start = start;
interrupt