diff options
Diffstat (limited to 'usr/src/lib/libshare/common/libshare.c')
-rw-r--r-- | usr/src/lib/libshare/common/libshare.c | 11 |
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); + } } |