diff options
author | Filipe Brandenburger <filbranden@gmail.com> | 2020-06-11 15:33:32 -0700 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2020-06-14 10:51:01 +0200 |
commit | 7283fbfd0c46819fea9f0a20671eaef99b3993e5 (patch) | |
tree | 0c590f7461a66d146f098f00060dd9024ca3594c /src/basic/proc-cmdline.c | |
parent | 25c86e4c39f81ec753df2ebc11728e5a3bba7b81 (diff) | |
download | systemd-7283fbfd0c46819fea9f0a20671eaef99b3993e5.tar.gz |
efi: Skip parsing SystemdOptions if there's an error getting it.
The original logic was logging an "ignored" debug message, but it was still
going ahead and calling proc_cmdline_parse_given() on the NULL line. Fix that
to skip that explicitly when the EFI variable wasn't really read.
Diffstat (limited to 'src/basic/proc-cmdline.c')
-rw-r--r-- | src/basic/proc-cmdline.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/basic/proc-cmdline.c b/src/basic/proc-cmdline.c index eb45682f3a..ba47ca5812 100644 --- a/src/basic/proc-cmdline.c +++ b/src/basic/proc-cmdline.c @@ -121,14 +121,16 @@ int proc_cmdline_parse(proc_cmdline_parse_t parse_item, void *data, ProcCmdlineF if (!FLAGS_SET(flags, PROC_CMDLINE_IGNORE_EFI_OPTIONS)) { r = systemd_efi_options_variable(&line); - if (r < 0 && r != -ENODATA) - log_debug_errno(r, "Failed to get SystemdOptions EFI variable, ignoring: %m"); - - r = proc_cmdline_parse_given(line, parse_item, data, flags); - if (r < 0) - return r; + if (r < 0) { + if (r != -ENODATA) + log_debug_errno(r, "Failed to get SystemdOptions EFI variable, ignoring: %m"); + } else { + r = proc_cmdline_parse_given(line, parse_item, data, flags); + if (r < 0) + return r; - line = mfree(line); + line = mfree(line); + } } r = proc_cmdline(&line); |