From: loli10K Date: Tue, 25 Jun 2019 01:02:17 +0000 (+0200) Subject: Fix bp_embedded_type enum definition X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=746d4a451eaff3d90fb63b853b3f91920d8ab69c;p=zfs Fix bp_embedded_type enum definition With the addition of BP_EMBEDDED_TYPE_REDACTED in 30af21b0 a couple of codepaths make wrong assumptions and could potentially result in errors. Reviewed-by: Brian Behlendorf Reviewed-by: Chris Dunlop Reviewed-by: Paul Dagnelie Signed-off-by: loli10K Closes #8951 --- diff --git a/include/sys/spa.h b/include/sys/spa.h index 9cc958c7c..a7e4d154f 100644 --- a/include/sys/spa.h +++ b/include/sys/spa.h @@ -407,9 +407,9 @@ _NOTE(CONSTCOND) } while (0) typedef enum bp_embedded_type { BP_EMBEDDED_TYPE_DATA, - BP_EMBEDDED_TYPE_RESERVED, /* Reserved for an unintegrated feature. */ + BP_EMBEDDED_TYPE_RESERVED, /* Reserved for Delphix byteswap feature. */ BP_EMBEDDED_TYPE_REDACTED, - NUM_BP_EMBEDDED_TYPES = BP_EMBEDDED_TYPE_RESERVED + NUM_BP_EMBEDDED_TYPES } bp_embedded_type_t; #define BPE_NUM_WORDS 14 diff --git a/module/zfs/zio.c b/module/zfs/zio.c index b2f722eb2..6454ae5e3 100644 --- a/module/zfs/zio.c +++ b/module/zfs/zio.c @@ -908,7 +908,7 @@ zfs_blkptr_verify(spa_t *spa, const blkptr_t *bp) } if (BP_IS_EMBEDDED(bp)) { - if (BPE_GET_ETYPE(bp) > NUM_BP_EMBEDDED_TYPES) { + if (BPE_GET_ETYPE(bp) >= NUM_BP_EMBEDDED_TYPES) { zfs_panic_recover("blkptr at %p has invalid ETYPE %llu", bp, (longlong_t)BPE_GET_ETYPE(bp)); }