Skip to content

Commit cc09e8a

Browse files
Mikulas PatockaMike Snitzer
authored andcommitted
dm integrity: set journal entry unused when shrinking device
Commit f6f72f3 ("dm integrity: don't replay journal data past the end of the device") skips journal replay if the target sector points beyond the end of the device. Unfortunatelly, it doesn't set the journal entry unused, which resulted in this BUG being triggered: BUG_ON(!journal_entry_is_unused(je)) Fix this by calling journal_entry_set_unused() for this case. Fixes: f6f72f3 ("dm integrity: don't replay journal data past the end of the device") Cc: stable@vger.kernel.org # v5.7+ Signed-off-by: Mikulas Patocka <mpatocka@redhat.com> Tested-by: Milan Broz <gmazyland@gmail.com> [snitzer: revised header] Signed-off-by: Mike Snitzer <snitzer@kernel.org>
1 parent dbdcc90 commit cc09e8a

1 file changed

Lines changed: 4 additions & 2 deletions

File tree

drivers/md/dm-integrity.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2472,9 +2472,11 @@ static void do_journal_write(struct dm_integrity_c *ic, unsigned write_start,
24722472
dm_integrity_io_error(ic, "invalid sector in journal", -EIO);
24732473
sec &= ~(sector_t)(ic->sectors_per_block - 1);
24742474
}
2475+
if (unlikely(sec >= ic->provided_data_sectors)) {
2476+
journal_entry_set_unused(je);
2477+
continue;
2478+
}
24752479
}
2476-
if (unlikely(sec >= ic->provided_data_sectors))
2477-
continue;
24782480
get_area_and_offset(ic, sec, &area, &offset);
24792481
restore_last_bytes(ic, access_journal_data(ic, i, j), je);
24802482
for (k = j + 1; k < ic->journal_section_entries; k++) {

0 commit comments

Comments
 (0)