On Tue, Nov 21, 2023 at 01:55:28AM -0700, Wu Bo wrote: > If BIO error, it may goto verity_finish_io() before > verity_fec_init_io(). Therefor, the fec_io->rs is not initialized and > may crash when doing memory freeing in verity_fec_finish_io(). > > Crash call stack: > die+0x90/0x2b8 > __do_kernel_fault+0x260/0x298 > do_bad_area+0x2c/0xdc > do_translation_fault+0x3c/0x54 > do_mem_abort+0x54/0x118 > el1_abort+0x38/0x5c > el1h_64_sync_handler+0x50/0x90 > el1h_64_sync+0x64/0x6c > free_rs+0x18/0xac > fec_rs_free+0x10/0x24 > mempool_free+0x58/0x148 > verity_fec_finish_io+0x4c/0xb0 > verity_end_io+0xb8/0x150 > > Signed-off-by: Wu Bo <bo.wu@xxxxxxxx> What commit introduced this bug? It looks like it was commit 5721d4e5a9cd ("dm verity: Add optional "try_verify_in_tasklet" feature"), which moved the call to verity_fec_init_io() from verity_map() to verity_work(). Do you agree? Should the call to verity_fec_init_io() perhaps be moved back to verity_map(), instead of putting it in verity_end_io()? Or maybe another call to verity_fec_init_io() should be added only just before the call to verity_finish_io() in verity_end_io(), given that it's not needed in the tasklet case? In any case, please also add a Fixes tag with the appropriate commit, as well as a "Cc stable" tag. - Eric