mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 18:41:58 +09:00
dm integrity: set journal entry unused when shrinking device
commitcc09e8a9deupstream. Commitf6f72f32c2("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:f6f72f32c2("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> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
737d5e25e2
commit
12ea1f7369
@@ -2459,9 +2459,11 @@ static void do_journal_write(struct dm_integrity_c *ic, unsigned write_start,
|
||||
dm_integrity_io_error(ic, "invalid sector in journal", -EIO);
|
||||
sec &= ~(sector_t)(ic->sectors_per_block - 1);
|
||||
}
|
||||
if (unlikely(sec >= ic->provided_data_sectors)) {
|
||||
journal_entry_set_unused(je);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (unlikely(sec >= ic->provided_data_sectors))
|
||||
continue;
|
||||
get_area_and_offset(ic, sec, &area, &offset);
|
||||
restore_last_bytes(ic, access_journal_data(ic, i, j), je);
|
||||
for (k = j + 1; k < ic->journal_section_entries; k++) {
|
||||
|
||||
Reference in New Issue
Block a user