diff --git a/include/libzutil.h b/include/libzutil.h
index c0a660ea70..d0d5632c02 100644
--- a/include/libzutil.h
+++ b/include/libzutil.h
@@ -97,8 +97,8 @@ _LIBZUTIL_H int zfs_append_partition(char *path, size_t max_len);
_LIBZUTIL_H int zfs_resolve_shortname(const char *name, char *path,
size_t pathlen);
-_LIBZUTIL_H char *zfs_strip_partition(char *);
-_LIBZUTIL_H char *zfs_strip_path(char *);
+_LIBZUTIL_H char *zfs_strip_partition(const char *);
+_LIBZUTIL_H const char *zfs_strip_path(const char *);
_LIBZUTIL_H int zfs_strcmp_pathname(const char *, const char *, int);
diff --git a/lib/libzfs/libzfs.abi b/lib/libzfs/libzfs.abi
index 40bd6a5574..1c7695275f 100644
--- a/lib/libzfs/libzfs.abi
+++ b/lib/libzfs/libzfs.abi
@@ -5588,12 +5588,12 @@
-
+
-
-
+
+
diff --git a/lib/libzfs/libzfs_pool.c b/lib/libzfs/libzfs_pool.c
index ffebf2340b..730e6db53f 100644
--- a/lib/libzfs/libzfs_pool.c
+++ b/lib/libzfs/libzfs_pool.c
@@ -4123,7 +4123,8 @@ char *
zpool_vdev_name(libzfs_handle_t *hdl, zpool_handle_t *zhp, nvlist_t *nv,
int name_flags)
{
- char *path, *type;
+ char *type, *tpath;
+ const char *path;
uint64_t value;
char buf[PATH_BUF_LEN];
char tmpbuf[PATH_BUF_LEN * 2];
@@ -4148,7 +4149,9 @@ zpool_vdev_name(libzfs_handle_t *hdl, zpool_handle_t *zhp, nvlist_t *nv,
(void) nvlist_lookup_uint64(nv, ZPOOL_CONFIG_GUID, &value);
(void) snprintf(buf, sizeof (buf), "%llu", (u_longlong_t)value);
path = buf;
- } else if (nvlist_lookup_string(nv, ZPOOL_CONFIG_PATH, &path) == 0) {
+ } else if (nvlist_lookup_string(nv, ZPOOL_CONFIG_PATH, &tpath) == 0) {
+ path = tpath;
+
if (name_flags & VDEV_NAME_FOLLOW_LINKS) {
char *rp = realpath(path, NULL);
if (rp) {
diff --git a/lib/libzutil/os/freebsd/zutil_device_path_os.c b/lib/libzutil/os/freebsd/zutil_device_path_os.c
index ac4748ec7a..f93ab9ad75 100644
--- a/lib/libzutil/os/freebsd/zutil_device_path_os.c
+++ b/lib/libzutil/os/freebsd/zutil_device_path_os.c
@@ -40,7 +40,7 @@
* Note: The caller must free the returned string.
*/
char *
-zfs_strip_partition(char *dev)
+zfs_strip_partition(const char *dev)
{
return (strdup(dev));
}
@@ -56,8 +56,8 @@ zfs_append_partition(char *path, size_t max_len)
* On FreeBSD we only want to remove "/dev/" from the beginning of
* paths if present.
*/
-char *
-zfs_strip_path(char *path)
+const char *
+zfs_strip_path(const char *path)
{
if (strncmp(path, _PATH_DEV, sizeof (_PATH_DEV) - 1) == 0)
return (path + sizeof (_PATH_DEV) - 1);
diff --git a/lib/libzutil/os/linux/zutil_device_path_os.c b/lib/libzutil/os/linux/zutil_device_path_os.c
index f24696259f..14461b857b 100644
--- a/lib/libzutil/os/linux/zutil_device_path_os.c
+++ b/lib/libzutil/os/linux/zutil_device_path_os.c
@@ -81,7 +81,7 @@ zfs_append_partition(char *path, size_t max_len)
* caller must free the returned string
*/
char *
-zfs_strip_partition(char *path)
+zfs_strip_partition(const char *path)
{
char *tmp = strdup(path);
char *part = NULL, *d = NULL;
@@ -117,7 +117,7 @@ zfs_strip_partition(char *path)
* Returned string must be freed.
*/
static char *
-zfs_strip_partition_path(char *path)
+zfs_strip_partition_path(const char *path)
{
char *newpath = strdup(path);
char *sd_offset;
@@ -148,8 +148,8 @@ zfs_strip_partition_path(char *path)
/*
* Strip the unwanted portion of a device path.
*/
-char *
-zfs_strip_path(char *path)
+const char *
+zfs_strip_path(const char *path)
{
return (strrchr(path, '/') + 1);
}