summaryrefslogtreecommitdiff
path: root/src/basic/proc-cmdline.c
diff options
context:
space:
mode:
authorFilipe Brandenburger <filbranden@gmail.com>2020-06-11 15:33:32 -0700
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2020-06-14 10:51:01 +0200
commit7283fbfd0c46819fea9f0a20671eaef99b3993e5 (patch)
tree0c590f7461a66d146f098f00060dd9024ca3594c /src/basic/proc-cmdline.c
parent25c86e4c39f81ec753df2ebc11728e5a3bba7b81 (diff)
downloadsystemd-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.c16
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);