On Tue, May 09, 2023 at 09:18:56PM +0900, Yeongjin Gil wrote:
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@vger.kernel.org Reviewed-by: Sungjong Seo sj1557.seo@samsung.com Signed-off-by: Yeongjin Gil youngjin.gil@samsung.com Signed-off-by: Mike Snitzer snitzer@kernel.org (cherry picked from commit e8c5d45f82ce0c238a4817739892fe8897a3dcc3)
drivers/md/dm-verity-target.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
You sent multiple versions of this, that are different, and I have no idea which one is correct :(
Please resend a v2 so that we have a chance to get this right.
thanks,
greg k-h