Commit 38bc1ab1 authored by Mikulas Patocka's avatar Mikulas Patocka Committed by Mike Snitzer
Browse files

dm-verity: align struct dm_verity_fec_io properly



dm_verity_fec_io is placed after the end of two hash digests. If the hash
digest has unaligned length, struct dm_verity_fec_io could be unaligned.

This commit fixes the placement of struct dm_verity_fec_io, so that it's
aligned.

Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
Cc: stable@vger.kernel.org
Fixes: a739ff3f ("dm verity: add support for forward error correction")
Signed-off-by: default avatarMike Snitzer <snitzer@kernel.org>
parent 0193e396
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -24,7 +24,8 @@ bool verity_fec_is_enabled(struct dm_verity *v)
 */
static inline struct dm_verity_fec_io *fec_io(struct dm_verity_io *io)
{
	return (struct dm_verity_fec_io *) verity_io_digest_end(io->v, io);
	return (struct dm_verity_fec_io *)
		((char *)io + io->v->ti->per_io_data_size - sizeof(struct dm_verity_fec_io));
}

/*
+0 −6
Original line number Diff line number Diff line
@@ -115,12 +115,6 @@ static inline u8 *verity_io_want_digest(struct dm_verity *v,
	return (u8 *)(io + 1) + v->ahash_reqsize + v->digest_size;
}

static inline u8 *verity_io_digest_end(struct dm_verity *v,
				       struct dm_verity_io *io)
{
	return verity_io_want_digest(v, io) + v->digest_size;
}

extern int verity_for_bv_block(struct dm_verity *v, struct dm_verity_io *io,
			       struct bvec_iter *iter,
			       int (*process)(struct dm_verity *v,