RE: [PATCH 5.10 307/381] dm verity: fix error handling for check_at_most_once on FEC

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> > From: Yeongjin Gil <youngjin.gil@xxxxxxxxxxx>
> >
> > [ Upstream commit e8c5d45f82ce0c238a4817739892fe8897a3dcc3 ]
> >
> > In verity_end_io(), if bi_status is not BLK_STS_OK, it can be return
> > directly. But if FEC configured, it is desired to correct the data
> > page through verity_verify_io. And the return value will be converted
> > to blk_status and passed to verity_finish_io().
> >
> > BTW, when a bit is set in v->validated_blocks, verity_verify_io()
> > skips verification regardless of I/O error for the corresponding bio.
> > In this case, the I/O error could not be returned properly, and as a
> > result, there is a problem that abnormal data could be read for the
> corresponding block.
> >
> > To fix this problem, when an I/O error occurs, do not skip
> > verification even if the bit related is set in v->validated_blocks.
> >
> > Fixes: 843f38d382b1 ("dm verity: add 'check_at_most_once' option to
> > only validate hashes once")
> > Cc: stable@xxxxxxxxxxxxxxx
> > Reviewed-by: Sungjong Seo <sj1557.seo@xxxxxxxxxxx>
> > Signed-off-by: Yeongjin Gil <youngjin.gil@xxxxxxxxxxx>
> > Signed-off-by: Mike Snitzer <snitzer@xxxxxxxxxx>
> > Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>
> > ---
> Hello Greg.
> This patch is the wrong patch I mentioned :( Please check the v2 patch I
> sent yesterday.
> If you are still confused, would it be better to change mail subject and
> send v3?
I checked that the previous patch was queued in stable kernel.
(dm verity: skip redundant verity_handle_err() on I/O errors)
I didn't know how to handle dependent commit in stable kernel.
There is no problem with the below current patch.
Thank you and I'm sorry for confusion.
> >  drivers/md/dm-verity-target.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/md/dm-verity-target.c
> > b/drivers/md/dm-verity-target.c index d9c388e6ce76c..0c2048d2b847e
> > 100644
> > --- a/drivers/md/dm-verity-target.c
> > +++ b/drivers/md/dm-verity-target.c
> > @@ -482,7 +482,7 @@ static int verity_verify_io(struct dm_verity_io *io)
> >  		sector_t cur_block = io->block + b;
> >  		struct ahash_request *req = verity_io_hash_req(v, io);
> >
> > -		if (v->validated_blocks &&
> > +		if (v->validated_blocks && bio->bi_status == BLK_STS_OK &&
> >  		    likely(test_bit(cur_block, v->validated_blocks))) {
> >  			verity_bv_skip_block(v, io, &io->iter);
> >  			continue;
> > --
> > 2.39.2
> >
> >





[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux