]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
udev: do not kill workers when requested to set the same log level currently assigned
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sun, 28 Aug 2022 02:14:51 +0000 (11:14 +0900)
committerFrantisek Sumsal <frantisek@sumsal.cz>
Sun, 28 Aug 2022 08:06:25 +0000 (08:06 +0000)
Also refuse invalid log level.

src/udev/udevd.c

index 028492721e5f2b578742ef6dbc9f790cedde0a9a..b179dfac3702fd6dd6ce72fcde336a676673fdad 100644 (file)
@@ -1254,7 +1254,17 @@ static int on_ctrl_msg(UdevCtrl *uctrl, UdevCtrlMessageType type, const UdevCtrl
 
         switch (type) {
         case UDEV_CTRL_SET_LOG_LEVEL:
+                if ((value->intval & LOG_PRIMASK) != value->intval) {
+                        log_debug("Received invalid udev control message (SET_LOG_LEVEL, %i), ignoring.", value->intval);
+                        break;
+                }
+
                 log_debug("Received udev control message (SET_LOG_LEVEL), setting log_level=%i", value->intval);
+
+                r = log_get_max_level();
+                if (r == value->intval)
+                        break;
+
                 log_set_max_level(value->intval);
                 manager->log_level = value->intval;
                 manager_kill_workers(manager, false);