aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/libzfs/libzfs_mount.c22
1 files changed, 7 insertions, 15 deletions
diff --git a/lib/libzfs/libzfs_mount.c b/lib/libzfs/libzfs_mount.c
index 77837a3b0..d007441f8 100644
--- a/lib/libzfs/libzfs_mount.c
+++ b/lib/libzfs/libzfs_mount.c
@@ -797,36 +797,28 @@ zfs_unshare(zfs_handle_t *zhp, const char *mountpoint,
{
libzfs_handle_t *hdl = zhp->zfs_hdl;
struct mnttab entry;
- char *mntpt = NULL;
+ const char *mntpt = NULL;
if (proto == NULL)
proto = share_all_proto;
/* check to see if need to unmount the filesystem */
if (mountpoint != NULL)
- mntpt = zfs_strdup(hdl, mountpoint);
+ mntpt = mountpoint;
if (mountpoint != NULL || ((zfs_get_type(zhp) == ZFS_TYPE_FILESYSTEM) &&
libzfs_mnttab_find(hdl, zfs_get_name(zhp), &entry) == 0)) {
if (mountpoint == NULL)
- mntpt = zfs_strdup(zhp->zfs_hdl, entry.mnt_mountp);
+ mntpt = entry.mnt_mountp;
for (const enum sa_protocol *curr_proto = proto;
- *curr_proto != SA_NO_PROTOCOL; curr_proto++) {
-
- if (sa_is_shared(mntpt, *curr_proto)) {
- if (unshare_one(hdl, zhp->zfs_name,
- mntpt, *curr_proto) != 0) {
- if (mntpt != NULL)
- free(mntpt);
+ *curr_proto != SA_NO_PROTOCOL; curr_proto++)
+ if (sa_is_shared(mntpt, *curr_proto) &&
+ unshare_one(hdl, zhp->zfs_name,
+ mntpt, *curr_proto) != 0)
return (-1);
- }
- }
- }
}
- if (mntpt != NULL)
- free(mntpt);
return (0);
}