]> granicus.if.org Git - zfs/commitdiff
Illumos #4061
authorMarcel Telka <marcel.telka@nexenta.com>
Fri, 16 Aug 2013 02:33:42 +0000 (22:33 -0400)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Tue, 5 Nov 2013 20:24:10 +0000 (12:24 -0800)
4061 libzfs: memory leak in iter_dependents_cb()
Reviewed by: Jeffry Molanus <jeffry.molanus@nexenta.com>
Reviewed by: Boris Protopopov <boris.protopopov@nexenta.com>
Reviewed by: Andy Stormont <andyjstormont@gmail.com>
Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Approved by: Dan McDonald <danmcd@nexenta.com>

References:
  https://www.illumos.org/issues/4061
  illumos/illumos-gate@2fbdf8dbf01ec1c85fcd3827cdf9e9f5f46c4c8a

Ported-by: Richard Yao <ryao@gentoo.org>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Issue #1775

lib/libzfs/libzfs_iter.c

index 3d8bc5e14803dcc9273fb9ceecfc213615decbde..e527bdcc5c213d245872081a1857a1bb14542026 100644 (file)
@@ -21,8 +21,8 @@
 
 /*
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright 2010 Nexenta Systems, Inc. All rights reserved.
  * Copyright (c) 2012 by Delphix. All rights reserved.
+ * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
  */
 
 #include <stdio.h>
@@ -449,8 +449,12 @@ iter_dependents_cb(zfs_handle_t *zhp, void *arg)
                            iter_dependents_cb, ida);
                ida->stack = isf.next;
        }
+
        if (!first && err == 0)
                err = ida->func(zhp, ida->data);
+       else
+               zfs_close(zhp);
+
        return (err);
 }