summaryrefslogtreecommitdiff
path: root/shim.c
diff options
context:
space:
mode:
Diffstat (limited to 'shim.c')
-rw-r--r--shim.c34
1 files changed, 24 insertions, 10 deletions
diff --git a/shim.c b/shim.c
index cc3654e7..52cf8a53 100644
--- a/shim.c
+++ b/shim.c
@@ -2022,18 +2022,32 @@ EFI_STATUS mirror_mok_sb_state()
UINTN DataSize = 0;
efi_status = get_variable(L"MokSBState", &Data, &DataSize, shim_lock_guid);
- if (efi_status != EFI_SUCCESS)
- return efi_status;
+ if (efi_status == EFI_SUCCESS) {
+ UINT8 *Data_RT = NULL;
+ UINTN DataSize_RT = 0;
+
+ efi_status = get_variable(L"MokSBStateRT", &Data_RT,
+ &DataSize_RT, shim_lock_guid);
+ if (efi_status == EFI_SUCCESS) {
+ efi_status = uefi_call_wrapper(RT->SetVariable, 5,
+ L"MokSBStateRT",
+ &shim_lock_guid,
+ EFI_VARIABLE_BOOTSERVICE_ACCESS
+ | EFI_VARIABLE_RUNTIME_ACCESS
+ | EFI_VARIABLE_NON_VOLATILE,
+ 0, NULL);
+ }
- efi_status = uefi_call_wrapper(RT->SetVariable, 5, L"MokSBStateRT",
- &shim_lock_guid,
- EFI_VARIABLE_BOOTSERVICE_ACCESS
- | EFI_VARIABLE_RUNTIME_ACCESS,
- DataSize, Data);
- if (efi_status != EFI_SUCCESS) {
- console_error(L"Failed to set MokSBStateRT", efi_status);
+ efi_status = uefi_call_wrapper(RT->SetVariable, 5,
+ L"MokSBStateRT",
+ &shim_lock_guid,
+ EFI_VARIABLE_BOOTSERVICE_ACCESS
+ | EFI_VARIABLE_RUNTIME_ACCESS,
+ DataSize, Data);
+ if (efi_status != EFI_SUCCESS) {
+ console_error(L"Failed to set MokSBStateRT", efi_status);
+ }
}
-
return efi_status;
}