]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
dm era: fix out-of-bounds memory access for non-zero start sector
authorSamuel Moelius <sam.moelius@trailofbits.com>
Thu, 2 Jul 2026 00:27:35 +0000 (00:27 +0000)
committerMikulas Patocka <mpatocka@redhat.com>
Wed, 8 Jul 2026 20:33:34 +0000 (22:33 +0200)
commita868196f03c2b19418ae3d2b69e195d668a271e5
tree7fa93a0c90ea5256eb6cb47eca86e49a976ddba5
parent9743132a41f4d9d0e54c5f2adcb821b04796bab1
dm era: fix out-of-bounds memory access for non-zero start sector

dm-era tracks writes in target-relative blocks, but era_map() calculates
the writeset block before applying the target offset.  Tables with a
non-zero start sector can therefore pass an absolute mapped-device block
to metadata_current_marked().

If the absolute block is beyond the current writeset size,
writeset_marked() tests past the end of the in-core bitset.  KASAN reports
this as a vmalloc-out-of-bounds access.

Apply the target offset before calculating the era block so writeset
lookups use the target-relative block number.

Assisted-by: Codex:gpt-5.5-cyber-preview
Signed-off-by: Samuel Moelius <sam.moelius@trailofbits.com>
Reviewed-by: Ming-Hung Tsai <mtsai@redhat.com>
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Cc: stable@vger.kernel.org
Fixes: eec40579d848 ("dm: add era target")
drivers/md/dm-era-target.c