diff options
author | наб <[email protected]> | 2022-02-28 16:55:16 +0100 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2022-05-12 09:26:47 -0700 |
commit | 5b14feec0646ae3a09e1713388bb7b3ef745a421 (patch) | |
tree | b50e9146336819783d88bd3f550a7a2d32f58888 /lib | |
parent | b4d9a82f6244df1b500a2988cf60849866fb4265 (diff) |
libzfs: mount: zfs_unshare: don't reallocate mountpoint
Reviewed-by: Brian Behlendorf <[email protected]>
Signed-off-by: Ahelenia Ziemiańska <[email protected]>
Closes #13165
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libzfs/libzfs_mount.c | 22 |
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); } |