From: Zbigniew Jędrzejewski-Szmek Date: Thu, 3 Jun 2021 16:47:05 +0000 (+0200) Subject: sd-device: let device_set_driver() accept NULL too X-Git-Tag: v249-rc2~52^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F19948%2Fhead;p=thirdparty%2Fsystemd.git sd-device: let device_set_driver() accept NULL too Like previous commit, but for driver not subsystem. --- diff --git a/src/libsystemd/sd-device/device-internal.h b/src/libsystemd/sd-device/device-internal.h index a1ba9ba754f..f4d02f995e2 100644 --- a/src/libsystemd/sd-device/device-internal.h +++ b/src/libsystemd/sd-device/device-internal.h @@ -109,5 +109,5 @@ int device_set_devtype(sd_device *device, const char *devtype); int device_set_devnum(sd_device *device, const char *major, const char *minor); int device_set_subsystem(sd_device *device, const char *subsystem); int device_set_drivers_subsystem(sd_device *device); -int device_set_driver(sd_device *device, const char *_driver); +int device_set_driver(sd_device *device, const char *driver); int device_set_usec_initialized(sd_device *device, usec_t when); diff --git a/src/libsystemd/sd-device/sd-device.c b/src/libsystemd/sd-device/sd-device.c index 200cf56a3fc..0d04e16818a 100644 --- a/src/libsystemd/sd-device/sd-device.c +++ b/src/libsystemd/sd-device/sd-device.c @@ -957,23 +957,24 @@ _public_ int sd_device_get_devnum(sd_device *device, dev_t *devnum) { return 0; } -int device_set_driver(sd_device *device, const char *_driver) { - _cleanup_free_ char *driver = NULL; +int device_set_driver(sd_device *device, const char *driver) { + _cleanup_free_ char *d = NULL; int r; assert(device); - assert(_driver); - driver = strdup(_driver); - if (!driver) - return -ENOMEM; + if (driver) { + d = strdup(driver); + if (!d) + return -ENOMEM; + } - r = device_add_property_internal(device, "DRIVER", driver); + r = device_add_property_internal(device, "DRIVER", d); if (r < 0) return r; device->driver_set = true; - return free_and_replace(device->driver, driver); + return free_and_replace(device->driver, d); } _public_ int sd_device_get_driver(sd_device *device, const char **ret) { @@ -991,14 +992,14 @@ _public_ int sd_device_get_driver(sd_device *device, const char **ret) { path = strjoina(syspath, "/driver"); r = readlink_value(path, &driver); - if (r >= 0) { - r = device_set_driver(device, driver); - if (r < 0) - return log_device_debug_errno(device, r, "sd-device: Failed to set driver for %s: %m", device->devpath); - } else if (r == -ENOENT) - device->driver_set = true; - else - return log_device_debug_errno(device, r, "sd-device: Failed to set driver for %s: %m", device->devpath); + if (r < 0 && r != -ENOENT) + return log_device_debug_errno(device, r, + "sd-device: readlink(\"%s\") failed: %m", path); + + r = device_set_driver(device, driver); + if (r < 0) + return log_device_debug_errno(device, r, + "sd-device: Failed to set driver \"%s\": %m", driver); } if (!device->driver)