Skip to content

Commit 6f5a9fc

Browse files
Wu Bogregkh
Wu Bo
authored andcommitted
dm verity: initialize fec io before freeing it
commit 7be05bd upstream. If BIO error, verity_end_io() can call verity_finish_io() before verity_fec_init_io(). Therefore, 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 Cc: [email protected] # v6.0+ Fixes: 5721d4e ("dm verity: Add optional "try_verify_in_tasklet" feature") Signed-off-by: Wu Bo <[email protected]> Reviewed-by: Mikulas Patocka <[email protected]> Signed-off-by: Mike Snitzer <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent 7cfc388 commit 6f5a9fc

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

drivers/md/dm-verity-target.c

+2-1
Original file line numberDiff line numberDiff line change
@@ -631,7 +631,6 @@ static void verity_work(struct work_struct *w)
631631

632632
io->in_tasklet = false;
633633

634-
verity_fec_init_io(io);
635634
verity_finish_io(io, errno_to_blk_status(verity_verify_io(io)));
636635
}
637636

@@ -779,6 +778,8 @@ static int verity_map(struct dm_target *ti, struct bio *bio)
779778
bio->bi_private = io;
780779
io->iter = bio->bi_iter;
781780

781+
verity_fec_init_io(io);
782+
782783
verity_submit_prefetch(v, io);
783784

784785
submit_bio_noacct(bio);

0 commit comments

Comments
 (0)