]> git.proxmox.com Git - mirror_zfs.git/commitdiff
Address Coverity warnings in #9902
authorMatthew Macy <mmacy@freebsd.org>
Tue, 11 Feb 2020 21:12:41 +0000 (13:12 -0800)
committerGitHub <noreply@github.com>
Tue, 11 Feb 2020 21:12:41 +0000 (13:12 -0800)
Coverity reports the variable may be NULL, but due to the
way the dirty records are handled this cannot be the case.
Add a comment and VERIFY to make this clear and silence
the warning.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Matt Macy <mmacy@FreeBSD.org>
Closes #9962

module/zfs/dbuf.c

index 0256f3a4cccf54dfb2a4f9ddaf3a59e432abaccb..bafc30e62dca10f666f97bd9a6e97fb666e4bda9 100644 (file)
@@ -1737,6 +1737,7 @@ dbuf_free_range(dnode_t *dn, uint64_t start_blkid, uint64_t end_blkid,
        dmu_buf_impl_t *db, *db_next;
        uint64_t txg = tx->tx_txg;
        avl_index_t where;
+       dbuf_dirty_record_t *dr;
 
        if (end_blkid > dn->dn_maxblkid &&
            !(start_blkid == DMU_SPILL_BLKID || end_blkid == DMU_SPILL_BLKID))
@@ -1790,10 +1791,8 @@ dbuf_free_range(dnode_t *dn, uint64_t start_blkid, uint64_t end_blkid,
                }
                /* The dbuf is referenced */
 
-               if (!list_is_empty(&db->db_dirty_records)) {
-                       dbuf_dirty_record_t *dr;
-
-                       dr = list_head(&db->db_dirty_records);
+               dr = list_head(&db->db_dirty_records);
+               if (dr != NULL) {
                        if (dr->dr_txg == txg) {
                                /*
                                 * This buffer is "in-use", re-adjust the file
@@ -1867,6 +1866,8 @@ dbuf_new_size(dmu_buf_impl_t *db, int size, dmu_tx_t *tx)
        db->db.db_size = size;
 
        dr = list_head(&db->db_dirty_records);
+       /* dirty record added by dmu_buf_will_dirty() */
+       VERIFY(dr != NULL);
        if (db->db_level == 0)
                dr->dt.dl.dr_data = buf;
        ASSERT3U(dr->dr_txg, ==, tx->tx_txg);