mirror of
https://github.com/systemd/systemd.git
synced 2024-10-27 18:55:40 +03:00
stub: fix reporting of dtb measurement
Let's properly return the measurement flag tristate, rather than a boolean. Otherwise we'll mistake "nothing to measure" as "not measured", which are two different things, and means we'll miscombine the flag later, claiming to userspace that we measured no dtb data even if there was.
This commit is contained in:
parent
d0c441f99e
commit
2cadbc21ae
@ -26,7 +26,7 @@ DECLARE_NOALLOC_SECTION(".sdmagic", "#### LoaderInfo: systemd-stub " GIT_VERSION
|
||||
|
||||
DECLARE_SBAT(SBAT_STUB_SECTION_TEXT);
|
||||
|
||||
static void combine_measured_flag(int *value, bool measured) {
|
||||
static void combine_measured_flag(int *value, int measured) {
|
||||
assert(value);
|
||||
|
||||
/* Combine the "measured" flag in a sensible way: if we haven't measured anything yet, the first
|
||||
@ -39,6 +39,9 @@ static void combine_measured_flag(int *value, bool measured) {
|
||||
* < 0 → nothing has been submitted for measurement so far
|
||||
*/
|
||||
|
||||
if (measured < 0)
|
||||
return;
|
||||
|
||||
*value = *value < 0 ? measured : *value && measured;
|
||||
}
|
||||
|
||||
@ -302,7 +305,7 @@ static void dtb_install_addons(
|
||||
size_t *dt_sizes,
|
||||
char16_t **dt_filenames,
|
||||
size_t n_dts,
|
||||
bool *ret_parameters_measured) {
|
||||
int *ret_parameters_measured) {
|
||||
|
||||
int parameters_measured = -1;
|
||||
EFI_STATUS err;
|
||||
@ -735,20 +738,22 @@ static EFI_STATUS run(EFI_HANDLE image) {
|
||||
log_error_status(err, "Error loading embedded devicetree: %m");
|
||||
}
|
||||
|
||||
int dtb_measured;
|
||||
dtb_install_addons(&dt_state,
|
||||
dt_bases_addons_global,
|
||||
dt_sizes_addons_global,
|
||||
dt_filenames_addons_global,
|
||||
n_dts_addons_global,
|
||||
&m);
|
||||
combine_measured_flag(¶meters_measured, m);
|
||||
&dtb_measured);
|
||||
combine_measured_flag(¶meters_measured, dtb_measured);
|
||||
|
||||
dtb_install_addons(&dt_state,
|
||||
dt_bases_addons_uki,
|
||||
dt_sizes_addons_uki,
|
||||
dt_filenames_addons_uki,
|
||||
n_dts_addons_uki,
|
||||
&m);
|
||||
combine_measured_flag(¶meters_measured, m);
|
||||
&dtb_measured);
|
||||
combine_measured_flag(¶meters_measured, dtb_measured);
|
||||
|
||||
if (parameters_measured > 0)
|
||||
(void) efivar_set_uint_string(MAKE_GUID_PTR(LOADER), u"StubPcrKernelParameters", TPM2_PCR_KERNEL_CONFIG, 0);
|
||||
|
Loading…
Reference in New Issue
Block a user