diff --git a/src/udev/udev-node.c b/src/udev/udev-node.c index f358564b41..5a011cf86b 100644 --- a/src/udev/udev-node.c +++ b/src/udev/udev-node.c @@ -64,7 +64,7 @@ static int create_symlink(const char *target, const char *slink) { } static int node_symlink(sd_device *dev, const char *devnode, const char *slink) { - _cleanup_free_ char *slink_dirname = NULL, *target = NULL; + _cleanup_free_ char *target = NULL; const char *id, *slink_tmp; struct stat st; int r; @@ -81,12 +81,8 @@ static int node_symlink(sd_device *dev, const char *devnode, const char *slink) } else if (errno != ENOENT) return log_device_debug_errno(dev, errno, "Failed to lstat() '%s': %m", slink); - r = path_extract_directory(slink, &slink_dirname); - if (r < 0) - return log_device_debug_errno(dev, r, "Failed to get parent directory of '%s': %m", slink); - /* use relative link */ - r = path_make_relative(slink_dirname, devnode, &target); + r = path_make_relative_parent(slink, devnode, &target); if (r < 0) return log_device_debug_errno(dev, r, "Failed to get relative path from '%s' to '%s': %m", slink, devnode);