summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xlib/libzfs/libzfs_dataset.c5
-rw-r--r--module/zfs/dsl_dataset.c8
2 files changed, 13 insertions, 0 deletions
diff --git a/lib/libzfs/libzfs_dataset.c b/lib/libzfs/libzfs_dataset.c
index 84fe71734..6b09cb6da 100755
--- a/lib/libzfs/libzfs_dataset.c
+++ b/lib/libzfs/libzfs_dataset.c
@@ -2262,6 +2262,11 @@ zfs_get_clones_nvl(zfs_handle_t *zhp)
(void) strsep(&cp, "/@");
root = zfs_open(zhp->zfs_hdl, pool,
ZFS_TYPE_FILESYSTEM);
+ if (root == NULL) {
+ nvlist_free(nv);
+ nvlist_free(value);
+ return (NULL);
+ }
(void) get_clones_cb(root, &gca);
}
diff --git a/module/zfs/dsl_dataset.c b/module/zfs/dsl_dataset.c
index d4a3a9e41..3026d8733 100644
--- a/module/zfs/dsl_dataset.c
+++ b/module/zfs/dsl_dataset.c
@@ -2354,6 +2354,10 @@ dsl_dataset_promote_check(void *arg, dmu_tx_t *tx)
}
snap = list_head(&ddpa->shared_snaps);
+ if (snap == NULL) {
+ err = SET_ERROR(ENOENT);
+ goto out;
+ }
origin_ds = snap->ds;
/* compute origin's new unique space */
@@ -2462,6 +2466,10 @@ dsl_dataset_promote_check(void *arg, dmu_tx_t *tx)
* iterate over all bps.
*/
snap = list_head(&ddpa->origin_snaps);
+ if (snap == NULL) {
+ err = SET_ERROR(ENOENT);
+ goto out;
+ }
err = snaplist_space(&ddpa->shared_snaps,
snap->ds->ds_dir->dd_origin_txg, &ddpa->cloneusedsnap);
if (err != 0)