]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
udevadm: do not ignroe error caused by unpriviledged user invoking the command
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 29 Sep 2020 04:44:28 +0000 (13:44 +0900)
committerLennart Poettering <lennart@poettering.net>
Tue, 29 Sep 2020 19:44:10 +0000 (21:44 +0200)
This effectively reverts commit 67acde4869a9505f9721e31fa5167c82445e0e12.

After commits 569ad251adde02dc0915758fe027e0346e50738a and
67acde4869a9505f9721e31fa5167c82445e0e12, -EACCES errors are ignored,
and thus 'udevadm trigger' succeeds even when it is invoked by non-root
users. Moreover, on -EACCES error, log messages are shown in debug
level, so usually we see no message, and users are easily confused
why uevents for devices are not triggered.

src/udev/udevadm-trigger.c

index 39113d2fa23294b5ad3dc963681b42389c52f7b3..0da4ea787b0d4554e31894f268cc10353619b931 100644 (file)
@@ -45,13 +45,14 @@ static int exec_list(sd_device_enumerator *e, const char *action, Set **settle_s
 
                 r = write_string_file(filename, action, WRITE_STRING_FILE_DISABLE_BUFFER);
                 if (r < 0) {
-                        bool ignore = IN_SET(r, -ENOENT, -EACCES, -ENODEV, -EROFS);
+                        bool ignore = r == -ENOENT;
 
                         log_full_errno(ignore ? LOG_DEBUG : LOG_ERR, r,
                                        "Failed to write '%s' to '%s'%s: %m",
                                        action, filename, ignore ? ", ignoring" : "");
-                        if (r == -EROFS)
-                                return 0; /* Read only filesystem. Return earlier. */
+                        if (IN_SET(r, -EACCES, -ENODEV, -EROFS))
+                                /* Inovoked by unpriviledged user, or read only filesystem. Return earlier. */
+                                return r;
                         if (ret == 0 && !ignore)
                                 ret = r;
                         continue;