mirror of
https://github.com/torvalds/linux.git
synced 2026-09-26 18:12:03 +02:00
efi/runtime-wrappers: check EFI_RUNTIME_SERVICES before using efi_rts_work
Move the EFI_RUNTIME_SERVICES check to the top of __efi_queue_work() and return directly, so a caller that finds runtime services disabled returns without touching the shared efi_rts_work. No functional change. This prepares for bounding the wait, where a timeout will clear EFI_RUNTIME_SERVICES while the leaked worker still owns efi_rts_work; a later caller must then bail out before reinitialising it. Signed-off-by: Breno Leitao <leitao@debian.org> Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
This commit is contained in:
parent
c554d4e534
commit
7f64cb373f
|
|
@ -333,17 +333,16 @@ static void __nocfi efi_call_rts(struct work_struct *work)
|
|||
static efi_status_t __efi_queue_work(enum efi_rts_ids id,
|
||||
union efi_rts_args *args)
|
||||
{
|
||||
if (!efi_enabled(EFI_RUNTIME_SERVICES)) {
|
||||
pr_warn_once("EFI Runtime Services are disabled!\n");
|
||||
return EFI_DEVICE_ERROR;
|
||||
}
|
||||
|
||||
efi_rts_work.efi_rts_id = id;
|
||||
efi_rts_work.args = args;
|
||||
efi_rts_work.caller = __builtin_return_address(0);
|
||||
efi_rts_work.status = EFI_ABORTED;
|
||||
|
||||
if (!efi_enabled(EFI_RUNTIME_SERVICES)) {
|
||||
pr_warn_once("EFI Runtime Services are disabled!\n");
|
||||
efi_rts_work.status = EFI_DEVICE_ERROR;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
init_completion(&efi_rts_work.efi_rts_comp);
|
||||
INIT_WORK(&efi_rts_work.work, efi_call_rts);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user