mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-19 05:31:32 +00:00
efi_loader: infinite recursion notifying events
UEFI SCT uses this call sequence to determine the current TPL level inside notification functions: OldTpl = BS->RaiseTPL(TPL_HIGH_LEVEL); BS->RestoreTPL(OldTpl); In RestoreTPL() we trigger the notification function of queued events. If we do not mark the event as non-queued before calling the notification function, this results in an infinite recursive call sequence. Mark the event as non-queued before entering the notification function. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
This commit is contained in:
parent
8ae39857b9
commit
3b985113be
1 changed files with 3 additions and 1 deletions
|
@ -181,10 +181,12 @@ static void efi_queue_event(struct efi_event *event, bool check_tpl)
|
||||||
/* Check TPL */
|
/* Check TPL */
|
||||||
if (check_tpl && efi_tpl >= event->notify_tpl)
|
if (check_tpl && efi_tpl >= event->notify_tpl)
|
||||||
return;
|
return;
|
||||||
|
event->is_queued = false;
|
||||||
EFI_CALL_VOID(event->notify_function(event,
|
EFI_CALL_VOID(event->notify_function(event,
|
||||||
event->notify_context));
|
event->notify_context));
|
||||||
|
} else {
|
||||||
|
event->is_queued = false;
|
||||||
}
|
}
|
||||||
event->is_queued = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Add table
Reference in a new issue