From dad2b19fffda43894a005a042055e268fe6b32e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=BD=D0=B0=D0=B1?= Date: Sun, 13 Mar 2022 21:18:17 +0100 Subject: [PATCH] module: zfs: zio_inject: zio_match_handler: don't << -1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Caught by UBSAN: ZI_NO_DVA is passed explicitly in zio_handle_decrypt_injection() and can be an ENOENT from zio_match_dva() Reviewed-by: Brian Behlendorf Reviewed-by: Damian Szuberski Signed-off-by: Ahelenia ZiemiaƄska Closes #13146 Closes #13190 --- module/zfs/zio_inject.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/module/zfs/zio_inject.c b/module/zfs/zio_inject.c index cfc2e8f5b..9b629ca0f 100644 --- a/module/zfs/zio_inject.c +++ b/module/zfs/zio_inject.c @@ -148,7 +148,8 @@ zio_match_handler(const zbookmark_phys_t *zb, uint64_t type, int dva, zb->zb_level == record->zi_level && zb->zb_blkid >= record->zi_start && zb->zb_blkid <= record->zi_end && - (record->zi_dvas == 0 || (record->zi_dvas & (1ULL << dva))) && + (record->zi_dvas == 0 || + (dva != ZI_NO_DVA && (record->zi_dvas & (1ULL << dva)))) && error == record->zi_error) { return (freq_triggered(record->zi_freq)); }