mirror of
https://github.com/systemd/systemd.git
synced 2024-11-01 17:51:22 +03:00
udev: change kernel commandline option parsing
- do not crash if an option without value is specified on the kernel command line, e.g. "udev.log-priority" :P - simplify the code a bit - warn about unknown "udev.*" options — this should make it easier to spot typos and reduce user confusion
This commit is contained in:
parent
5707ecf300
commit
92e724670f
@ -1363,8 +1363,7 @@ static int listen_fds(int *rctrl, int *rnetlink) {
|
|||||||
* udev.event-timeout=<number of seconds> seconds to wait before terminating an event
|
* udev.event-timeout=<number of seconds> seconds to wait before terminating an event
|
||||||
*/
|
*/
|
||||||
static int parse_proc_cmdline_item(const char *key, const char *value, void *data) {
|
static int parse_proc_cmdline_item(const char *key, const char *value, void *data) {
|
||||||
const char *full_key = key;
|
int r = 0;
|
||||||
int r;
|
|
||||||
|
|
||||||
assert(key);
|
assert(key);
|
||||||
|
|
||||||
@ -1374,37 +1373,25 @@ static int parse_proc_cmdline_item(const char *key, const char *value, void *dat
|
|||||||
if (startswith(key, "rd."))
|
if (startswith(key, "rd."))
|
||||||
key += strlen("rd.");
|
key += strlen("rd.");
|
||||||
|
|
||||||
if (startswith(key, "udev."))
|
if (streq(key, "udev.log-priority") && value) {
|
||||||
key += strlen("udev.");
|
r = util_log_priority(value);
|
||||||
else
|
if (r >= 0)
|
||||||
return 0;
|
log_set_max_level(r);
|
||||||
|
} else if (streq(key, "udev.event-timeout") && value) {
|
||||||
if (streq(key, "log-priority")) {
|
|
||||||
int prio;
|
|
||||||
|
|
||||||
prio = util_log_priority(value);
|
|
||||||
if (prio < 0)
|
|
||||||
goto invalid;
|
|
||||||
log_set_max_level(prio);
|
|
||||||
} else if (streq(key, "children-max")) {
|
|
||||||
r = safe_atou(value, &arg_children_max);
|
|
||||||
if (r < 0)
|
|
||||||
goto invalid;
|
|
||||||
} else if (streq(key, "exec-delay")) {
|
|
||||||
r = safe_atoi(value, &arg_exec_delay);
|
|
||||||
if (r < 0)
|
|
||||||
goto invalid;
|
|
||||||
} else if (streq(key, "event-timeout")) {
|
|
||||||
r = safe_atou64(value, &arg_event_timeout_usec);
|
r = safe_atou64(value, &arg_event_timeout_usec);
|
||||||
if (r < 0)
|
if (r >= 0) {
|
||||||
goto invalid;
|
arg_event_timeout_usec *= USEC_PER_SEC;
|
||||||
arg_event_timeout_usec *= USEC_PER_SEC;
|
arg_event_timeout_warn_usec = (arg_event_timeout_usec / 3) ? : 1;
|
||||||
arg_event_timeout_warn_usec = (arg_event_timeout_usec / 3) ? : 1;
|
}
|
||||||
}
|
} else if (streq(key, "udev.children-max") && value)
|
||||||
|
r = safe_atou(value, &arg_children_max);
|
||||||
|
else if (streq(key, "udev.exec-delay") && value)
|
||||||
|
r = safe_atoi(value, &arg_exec_delay);
|
||||||
|
else if (startswith(key, "udev."))
|
||||||
|
log_warning("Unknown udev kernel command line option \"%s\"", key);
|
||||||
|
|
||||||
return 0;
|
if (r < 0)
|
||||||
invalid:
|
log_warning_errno(r, "Failed to parse \"%s=%s\", ignoring: %m", key, value);
|
||||||
log_warning("invalid %s ignored: %s", full_key, value);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user