From 5cf0ee31eca931c706e1f316099b449a12cadb6d Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 12 Apr 2022 11:42:30 +0200 Subject: [PATCH] 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. --- src/libsystemd/sd-device/sd-device.c | 4 ++++ 1 file changed, 4 insertions(+) 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); } -- 2.47.3