• Yeongjin Gil's avatar
    dm verity: fix error handling for check_at_most_once on FEC · e8c5d45f
    Yeongjin Gil authored
    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: 843f38d3 ("dm verity: add 'check_at_most_once' option to only validate hashes once")
    Cc: stable@vger.kernel.org
    Reviewed-by: default avatarSungjong Seo <sj1557.seo@samsung.com>
    Signed-off-by: default avatarYeongjin Gil <youngjin.gil@samsung.com>
    Signed-off-by: default avatarMike Snitzer <snitzer@kernel.org>
    e8c5d45f
dm-verity-target.c 37.1 KB