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 <behlendorf1@llnl.gov> Signed-off-by: Richard Yao <richard.yao@alumni.stonybrook.edu> Closes #14575
This commit is contained in:
parent
399bb81607
commit
f9e109223b
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue