From f9e109223ba06690d3318ee352dc75d45ce88e2e Mon Sep 17 00:00:00 2001 From: Richard Yao Date: Sat, 4 Mar 2023 16:11:49 -0500 Subject: Suppress Clang Static Analyzer warning in dbuf_dnode_findbp() Clang's static analyzer reports that if a `blkid == DMU_SPILL_BLKID` is passed, then we can have a NULL pointer dereference when either ->dn_have_spill or `DNODE_FLAG_SPILL_BLKPTR` is not set. This should not happen. We add an `ASSERT()` to suppress reports about NULL pointer dereferences. Originally, I wanted to use one or two IMPLY statements on pre-conditions before the call to `dbuf_findbp()`, but Clang's static analyzer did not understand it. Reviewed-by: Brian Behlendorf Signed-off-by: Richard Yao Closes #14575 --- module/zfs/dbuf.c | 1 + 1 file changed, 1 insertion(+) (limited to 'module') diff --git a/module/zfs/dbuf.c b/module/zfs/dbuf.c index 427aab508..f1d2f61e7 100644 --- a/module/zfs/dbuf.c +++ b/module/zfs/dbuf.c @@ -3187,6 +3187,7 @@ dbuf_dnode_findbp(dnode_t *dn, uint64_t level, uint64_t blkid, err = dbuf_findbp(dn, level, blkid, B_FALSE, &dbp, &bp2); if (err == 0) { + ASSERT3P(bp2, !=, NULL); *bp = *bp2; if (dbp != NULL) dbuf_rele(dbp, NULL); -- cgit v1.2.3