From: Lennart Poettering Date: Tue, 12 Apr 2022 09:42:30 +0000 (+0200) Subject: sd-device: generate e better error code when trying to allocate sd_device for non-dir X-Git-Tag: v251-rc2~131^2~8 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5cf0ee31eca931c706e1f316099b449a12cadb6d;p=thirdparty%2Fsystemd.git sd-device: generate e better error code when trying to allocate sd_device for non-dir Currently, for sysfs paths outside of /sys/devices/ we do better checking if something is a suitable path: we check if it's actually a directory, and if not return ENODEV. Let's make the codepath for nodes *inside* of /sys/device/ similar: let's also return ENODEV if the path supplied is not a directory. Previously, we'd return ENOTDIR in that case, which is quite confusing I think. --- diff --git a/src/libsystemd/sd-device/sd-device.c b/src/libsystemd/sd-device/sd-device.c index 0435beca16e..8c1b1194cda 100644 --- a/src/libsystemd/sd-device/sd-device.c +++ b/src/libsystemd/sd-device/sd-device.c @@ -196,6 +196,10 @@ int device_set_syspath(sd_device *device, const char *_syspath, bool verify) { * Hence, use log_trace_errno() here. */ return log_trace_errno(SYNTHETIC_ERRNO(ENODEV), "sd-device: the uevent file \"%s/uevent\" does not exist.", syspath); + if (errno == ENOTDIR) + /* Not actually a directory. */ + return log_debug_errno(SYNTHETIC_ERRNO(ENODEV), + "sd-device: the syspath \"%s\" is not a directory.", syspath); return log_debug_errno(errno, "sd-device: cannot find uevent file for %s: %m", syspath); }