]> granicus.if.org Git - zfs/commitdiff
OpenZFS 6873 - zfs_destroy_snaps_nvl leaks errlist
authorChris Williamson <chris.williamson@delphix.com>
Wed, 20 Apr 2016 03:45:04 +0000 (20:45 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Mon, 9 May 2016 18:25:41 +0000 (11:25 -0700)
Authored by: Chris Williamson <chris.williamson@delphix.com>
Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Reviewed by: Paul Dagnelie <pcd@delphix.com>
Ported-by: Denys Rtveliashvili <denys@rtveliashvili.name>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
lzc_destroy_snaps() returns an nvlist in errlist.
zfs_destroy_snaps_nvl() should nvlist_free() it before returning.

OpenZFS-issue: https://www.illumos.org/issues/6873
OpenZFS-commit: https://github.com/openzfs/openzfs/commit/ee06391
Closes #4614

lib/libzfs/libzfs_dataset.c

index 1d9e5156a34af895ae88abf9618c5396f14b511a..3586c0e5e5e13fe2fd559ec0778c77069ebb760e 100644 (file)
@@ -3447,13 +3447,15 @@ int
 zfs_destroy_snaps_nvl(libzfs_handle_t *hdl, nvlist_t *snaps, boolean_t defer)
 {
        int ret;
-       nvlist_t *errlist;
+       nvlist_t *errlist = NULL;
        nvpair_t *pair;
 
        ret = lzc_destroy_snaps(snaps, defer, &errlist);
 
-       if (ret == 0)
+       if (ret == 0) {
+               nvlist_free(errlist);
                return (0);
+       }
 
        if (nvlist_empty(errlist)) {
                char errbuf[1024];
@@ -3481,6 +3483,7 @@ zfs_destroy_snaps_nvl(libzfs_handle_t *hdl, nvlist_t *snaps, boolean_t defer)
                }
        }
 
+       nvlist_free(errlist);
        return (ret);
 }