[U-Boot] [PATCH 1/1] efi_loader: allowable event types in CreateEventEx()

CreateEventEx() does allow the following event types:
* EVT_SIGNAL_EXIT_BOOT_SERVICES * EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de --- lib/efi_loader/efi_boottime.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-)
diff --git a/lib/efi_loader/efi_boottime.c b/lib/efi_loader/efi_boottime.c index 602b0da9f0..8965dabb2b 100644 --- a/lib/efi_loader/efi_boottime.c +++ b/lib/efi_loader/efi_boottime.c @@ -665,10 +665,26 @@ efi_status_t EFIAPI efi_create_event_ex(uint32_t type, efi_uintn_t notify_tpl, efi_guid_t *event_group, struct efi_event **event) { + efi_status_t ret; + EFI_ENTRY("%d, 0x%zx, %p, %p, %pUl", type, notify_tpl, notify_function, notify_context, event_group); - return EFI_EXIT(efi_create_event(type, notify_tpl, notify_function, - notify_context, event_group, event)); + + /* + * The allowable input parameters are the same as in CreateEvent() + * except for the following two disallowed event types. + */ + switch (type) { + case EVT_SIGNAL_EXIT_BOOT_SERVICES: + case EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE: + ret = EFI_INVALID_PARAMETER; + goto out; + } + + ret = efi_create_event(type, notify_tpl, notify_function, + notify_context, event_group, event); +out: + return EFI_EXIT(ret); }
/** -- 2.20.1

On 04.05.19 10:17, Heinrich Schuchardt wrote:
CreateEventEx() does allow the following event types:
... not ...
- EVT_SIGNAL_EXIT_BOOT_SERVICES
- EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de
Did you find this proactively or is it fixing some SCT test case? After all, functionally the change should be a no-op, because no payload should create those events in the first place :). I would just like to see some comment about the reasoning in the commit message.
Either way, this is definitely getting us closer to spec conformance, so good to have. Maybe one day (if we grow too much), we can have some smarts somewhere that allow us to skip all those sanity checks in small builds.
Reviewed-by: Alexander Graf agraf@csgraf.de
Alex
participants (2)
-
Alexander Graf
-
Heinrich Schuchardt