From 9a26098e90116fdb5fcffa03485b375ee0c82b6a Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Mon, 9 Jan 2023 14:00:09 +0900 Subject: [PATCH] sd-device: make device_set_syspath() clear sysname and sysnum Otherwise, when a new syspath is assigned to the sd-device object, sd_device_get_sysname() or _sysnum() will provide an outdated device name or number. --- src/libsystemd/sd-device/device-private.c | 4 ---- src/libsystemd/sd-device/sd-device.c | 4 ++++ 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libsystemd/sd-device/device-private.c b/src/libsystemd/sd-device/device-private.c index 7cda48c4caf..95539389314 100644 --- a/src/libsystemd/sd-device/device-private.c +++ b/src/libsystemd/sd-device/device-private.c @@ -645,10 +645,6 @@ int device_rename(sd_device *device, const char *name) { if (r < 0) return r; - /* Here, only clear the sysname and sysnum. They will be set when requested. */ - device->sysnum = NULL; - device->sysname = mfree(device->sysname); - r = sd_device_get_property_value(device, "INTERFACE", &interface); if (r == -ENOENT) return 0; diff --git a/src/libsystemd/sd-device/sd-device.c b/src/libsystemd/sd-device/sd-device.c index 2fcdce7bac9..f8a320dddaa 100644 --- a/src/libsystemd/sd-device/sd-device.c +++ b/src/libsystemd/sd-device/sd-device.c @@ -249,6 +249,10 @@ int device_set_syspath(sd_device *device, const char *_syspath, bool verify) { free_and_replace(device->syspath, syspath); device->devpath = devpath; + + /* Unset sysname and sysnum, they will be assigned when requested. */ + device->sysnum = NULL; + device->sysname = mfree(device->sysname); return 0; } -- 2.47.3