From: Yu Watanabe Date: Mon, 9 Jan 2023 06:00:30 +0000 (+0900) Subject: udev: move device_rename() from device-private.c X-Git-Tag: v253-rc1~148^2~5 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ff88b949531e70639c507f74da875a7de2adf543;p=thirdparty%2Fsystemd.git udev: move device_rename() from device-private.c The function is used only by udevd. --- diff --git a/src/libsystemd/sd-device/device-private.c b/src/libsystemd/sd-device/device-private.c index 7a5d128cc1c..182c4d66ff7 100644 --- a/src/libsystemd/sd-device/device-private.c +++ b/src/libsystemd/sd-device/device-private.c @@ -618,51 +618,6 @@ int device_get_devlink_priority(sd_device *device, int *ret) { return 0; } -int device_rename(sd_device *device, const char *name) { - _cleanup_free_ char *new_syspath = NULL; - const char *s; - int r; - - assert(device); - assert(name); - - if (!filename_is_valid(name)) - return -EINVAL; - - r = sd_device_get_syspath(device, &s); - if (r < 0) - return r; - - r = path_extract_directory(s, &new_syspath); - if (r < 0) - return r; - - if (!path_extend(&new_syspath, name)) - return -ENOMEM; - - if (!path_is_safe(new_syspath)) - return -EINVAL; - - /* At the time this is called, the renamed device may not exist yet. Hence, we cannot validate - * the new syspath. */ - r = device_set_syspath(device, new_syspath, /* verify = */ false); - if (r < 0) - return r; - - r = sd_device_get_property_value(device, "INTERFACE", &s); - if (r == -ENOENT) - return 0; - if (r < 0) - return r; - - /* like DEVPATH_OLD, INTERFACE_OLD is not saved to the db, but only stays around for the current event */ - r = device_add_property_internal(device, "INTERFACE_OLD", s); - if (r < 0) - return r; - - return device_add_property_internal(device, "INTERFACE", name); -} - static int device_shallow_clone(sd_device *device, sd_device **ret) { _cleanup_(sd_device_unrefp) sd_device *dest = NULL; const char *val = NULL; diff --git a/src/libsystemd/sd-device/device-private.h b/src/libsystemd/sd-device/device-private.h index a59f130affc..e57b74ba244 100644 --- a/src/libsystemd/sd-device/device-private.h +++ b/src/libsystemd/sd-device/device-private.h @@ -53,7 +53,6 @@ int device_properties_prepare(sd_device *device); int device_get_properties_nulstr(sd_device *device, const char **ret_nulstr, size_t *ret_len); int device_get_properties_strv(sd_device *device, char ***ret); -int device_rename(sd_device *device, const char *name); int device_clone_with_db(sd_device *device, sd_device **ret); int device_tag_index(sd_device *dev, sd_device *dev_old, bool add); diff --git a/src/udev/udev-event.c b/src/udev/udev-event.c index ebffdc34307..e0904145eaa 100644 --- a/src/udev/udev-event.c +++ b/src/udev/udev-event.c @@ -12,6 +12,7 @@ #include "sd-event.h" #include "alloc-util.h" +#include "device-internal.h" #include "device-private.h" #include "device-util.h" #include "fd-util.h" @@ -859,6 +860,51 @@ int udev_event_spawn( return r; /* 0 for success, and positive if the program failed */ } +static int device_rename(sd_device *device, const char *name) { + _cleanup_free_ char *new_syspath = NULL; + const char *s; + int r; + + assert(device); + assert(name); + + if (!filename_is_valid(name)) + return -EINVAL; + + r = sd_device_get_syspath(device, &s); + if (r < 0) + return r; + + r = path_extract_directory(s, &new_syspath); + if (r < 0) + return r; + + if (!path_extend(&new_syspath, name)) + return -ENOMEM; + + if (!path_is_safe(new_syspath)) + return -EINVAL; + + /* At the time this is called, the renamed device may not exist yet. Hence, we cannot validate + * the new syspath. */ + r = device_set_syspath(device, new_syspath, /* verify = */ false); + if (r < 0) + return r; + + r = sd_device_get_property_value(device, "INTERFACE", &s); + if (r == -ENOENT) + return 0; + if (r < 0) + return r; + + /* like DEVPATH_OLD, INTERFACE_OLD is not saved to the db, but only stays around for the current event */ + r = device_add_property_internal(device, "INTERFACE_OLD", s); + if (r < 0) + return r; + + return device_add_property_internal(device, "INTERFACE", name); +} + static int rename_netif(UdevEvent *event) { const char *oldname; sd_device *dev;