diff options
-rw-r--r-- | module/zfs/ddt.c | 6 | ||||
-rw-r--r-- | module/zfs/zio.c | 7 |
2 files changed, 9 insertions, 4 deletions
diff --git a/module/zfs/ddt.c b/module/zfs/ddt.c index ef868619a..2d8763a54 100644 --- a/module/zfs/ddt.c +++ b/module/zfs/ddt.c @@ -323,8 +323,10 @@ ddt_phys_addref(ddt_phys_t *ddp) void ddt_phys_decref(ddt_phys_t *ddp) { - ASSERT((int64_t)ddp->ddp_refcnt > 0); - ddp->ddp_refcnt--; + if (ddp) { + ASSERT((int64_t)ddp->ddp_refcnt > 0); + ddp->ddp_refcnt--; + } } void diff --git a/module/zfs/zio.c b/module/zfs/zio.c index 77b1764d7..0622553f5 100644 --- a/module/zfs/zio.c +++ b/module/zfs/zio.c @@ -2249,8 +2249,11 @@ zio_ddt_free(zio_t *zio) ddt_enter(ddt); freedde = dde = ddt_lookup(ddt, bp, B_TRUE); - ddp = ddt_phys_select(dde, bp); - ddt_phys_decref(ddp); + if (dde) { + ddp = ddt_phys_select(dde, bp); + if (ddp) + ddt_phys_decref(ddp); + } ddt_exit(ddt); return (ZIO_PIPELINE_CONTINUE); |