diff options
author | mav <mav@FreeBSD.org> | 2016-10-12 05:39:29 +0000 |
---|---|---|
committer | mav <mav@FreeBSD.org> | 2016-10-12 05:39:29 +0000 |
commit | 848b74bc7a0d3863a27b2c2e1684d7cddbec7d97 (patch) | |
tree | 6ac2702f35f51cf0b951ff780f808234afe56361 | |
parent | fae25120fd0bc44b1fffde52391b2937ed0eb261 (diff) | |
download | FreeBSD-src-848b74bc7a0d3863a27b2c2e1684d7cddbec7d97.zip FreeBSD-src-848b74bc7a0d3863a27b2c2e1684d7cddbec7d97.tar.gz |
MFC r305203: MFV r302655: 6873 zfs_destroy_snaps_nvl leaks errlist
illumos/illumos-gate@4cde22c29999ffb907ca39d2ebd512812f7e5168
https://github.com/illumos/illumos-gate/commit/4cde22c29999ffb907ca39d2ebd512812
f7e5168
https://www.illumos.org/issues/6873
lzc_destroy_snaps() returns an nvlist in errlist.
zfs_destroy_snaps_nvl() should nvlist_free() it before returning.
Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Reviewed by: Paul Dagnelie <pcd@delphix.com>
Approved by: Dan McDonald <danmcd@omniti.com>
Author: Chris Williamson <chris.williamson@delphix.com>
-rw-r--r-- | cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c b/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c index 843684d..fffa6bc 100644 --- a/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c +++ b/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c @@ -3449,12 +3449,14 @@ int zfs_destroy_snaps_nvl(libzfs_handle_t *hdl, nvlist_t *snaps, boolean_t defer) { int ret; - nvlist_t *errlist; + nvlist_t *errlist = NULL; 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]; @@ -3482,6 +3484,7 @@ zfs_destroy_snaps_nvl(libzfs_handle_t *hdl, nvlist_t *snaps, boolean_t defer) } } + nvlist_free(errlist); return (ret); } |