From: Yu Watanabe Date: Mon, 11 Apr 2022 03:08:06 +0000 (+0900) Subject: udev: make node_symlink() accept NULL devname X-Git-Tag: v252-rc1~207^2~2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=541a463fd5aad912c07c88d84e5a1c597c810956;p=thirdparty%2Fsystemd.git udev: make node_symlink() accept NULL devname --- diff --git a/src/udev/udev-node.c b/src/udev/udev-node.c index 5a011cf86b8..8e78546e189 100644 --- a/src/udev/udev-node.c +++ b/src/udev/udev-node.c @@ -70,13 +70,18 @@ static int node_symlink(sd_device *dev, const char *devnode, const char *slink) int r; assert(dev); - assert(devnode); assert(slink); + if (!devnode) { + r = sd_device_get_devname(dev, &devnode); + if (r < 0) + return log_device_debug_errno(dev, r, "Failed to get device node: %m"); + } + if (lstat(slink, &st) >= 0) { if (!S_ISLNK(st.st_mode)) return log_device_debug_errno(dev, SYNTHETIC_ERRNO(EEXIST), - "Conflicting inode '%s' found, link to '%s' will not be created.", + "Conflicting inode '%s' found, symlink to '%s' will not be created.", slink, devnode); } else if (errno != ENOENT) return log_device_debug_errno(dev, errno, "Failed to lstat() '%s': %m", slink); @@ -488,23 +493,12 @@ static int device_get_devpath_by_devnum(sd_device *dev, char **ret) { int udev_node_update(sd_device *dev, sd_device *dev_old) { _cleanup_free_ char *filename = NULL; - const char *devnode, *devlink; + const char *devlink; int r; assert(dev); assert(dev_old); - r = sd_device_get_devname(dev, &devnode); - if (r < 0) - return log_device_debug_errno(dev, r, "Failed to get devnode: %m"); - - if (DEBUG_LOGGING) { - const char *id = NULL; - - (void) device_get_device_id(dev, &id); - log_device_debug(dev, "Handling device node '%s', devnum=%s", devnode, strna(id)); - } - /* update possible left-over symlinks */ FOREACH_DEVICE_DEVLINK(dev_old, devlink) { /* check if old link name still belongs to this device */ @@ -536,7 +530,7 @@ int udev_node_update(sd_device *dev, sd_device *dev_old) { return log_device_debug_errno(dev, r, "Failed to get device path: %m"); /* always add /dev/{block,char}/$major:$minor */ - r = node_symlink(dev, devnode, filename); + r = node_symlink(dev, NULL, filename); if (r < 0) return log_device_warning_errno(dev, r, "Failed to create device symlink '%s': %m", filename);