summaryrefslogtreecommitdiff
path: root/usr/src/lib/libshare/common/libshare.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/lib/libshare/common/libshare.c')
-rw-r--r--usr/src/lib/libshare/common/libshare.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/usr/src/lib/libshare/common/libshare.c b/usr/src/lib/libshare/common/libshare.c
index 8fbf1e82ae..cbe5aae3bb 100644
--- a/usr/src/lib/libshare/common/libshare.c
+++ b/usr/src/lib/libshare/common/libshare.c
@@ -1025,15 +1025,10 @@ sa_fini(sa_handle_t handle)
*/
if (impl_handle->doc != NULL)
xmlFreeDoc(impl_handle->doc);
- sa_scf_fini(impl_handle->scfhandle);
- sa_zfs_fini(impl_handle);
/* Remove and free the entry in the global list. */
remove_handle_for_root(impl_handle->tree);
- /* Make sure we free the handle */
- free(impl_handle);
-
/*
* If this was the last handle to release, unload the
* plugins that were loaded. Use a mutex in case
@@ -1044,6 +1039,12 @@ sa_fini(sa_handle_t handle)
(void) proto_plugin_fini();
(void) mutex_unlock(&sa_global_lock);
+ sa_scf_fini(impl_handle->scfhandle);
+ sa_zfs_fini(impl_handle);
+
+ /* Make sure we free the handle */
+ free(impl_handle);
+
}
}