mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 04:33:26 +02:00
Merge tag 'efi-fixes-for-v6.2-1' of git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi
Pull EFI fixes from Ard Biesheuvel: - avoid a potential crash on the efi_subsys_init() error path - use more appropriate error code for runtime services calls issued after a crash in the firmware occurred - avoid READ_ONCE() for accessing firmware tables that may appear misaligned in memory * tag 'efi-fixes-for-v6.2-1' of git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi: efi: tpm: Avoid READ_ONCE() for accessing the event log efi: rt-wrapper: Add missing include efi: fix userspace infinite retry read efivars after EFI runtime services page fault efi: fix NULL-deref in init error path
This commit is contained in:
@@ -4,6 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
|
#include <asm/assembler.h>
|
||||||
|
|
||||||
SYM_FUNC_START(__efi_rt_asm_wrapper)
|
SYM_FUNC_START(__efi_rt_asm_wrapper)
|
||||||
stp x29, x30, [sp, #-112]!
|
stp x29, x30, [sp, #-112]!
|
||||||
|
@@ -394,8 +394,8 @@ static int __init efisubsys_init(void)
|
|||||||
efi_kobj = kobject_create_and_add("efi", firmware_kobj);
|
efi_kobj = kobject_create_and_add("efi", firmware_kobj);
|
||||||
if (!efi_kobj) {
|
if (!efi_kobj) {
|
||||||
pr_err("efi: Firmware registration failed.\n");
|
pr_err("efi: Firmware registration failed.\n");
|
||||||
destroy_workqueue(efi_rts_wq);
|
error = -ENOMEM;
|
||||||
return -ENOMEM;
|
goto err_destroy_wq;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (efi_rt_services_supported(EFI_RT_SUPPORTED_GET_VARIABLE |
|
if (efi_rt_services_supported(EFI_RT_SUPPORTED_GET_VARIABLE |
|
||||||
@@ -443,7 +443,10 @@ err_unregister:
|
|||||||
err_put:
|
err_put:
|
||||||
kobject_put(efi_kobj);
|
kobject_put(efi_kobj);
|
||||||
efi_kobj = NULL;
|
efi_kobj = NULL;
|
||||||
destroy_workqueue(efi_rts_wq);
|
err_destroy_wq:
|
||||||
|
if (efi_rts_wq)
|
||||||
|
destroy_workqueue(efi_rts_wq);
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -62,6 +62,7 @@ struct efi_runtime_work efi_rts_work;
|
|||||||
\
|
\
|
||||||
if (!efi_enabled(EFI_RUNTIME_SERVICES)) { \
|
if (!efi_enabled(EFI_RUNTIME_SERVICES)) { \
|
||||||
pr_warn_once("EFI Runtime Services are disabled!\n"); \
|
pr_warn_once("EFI Runtime Services are disabled!\n"); \
|
||||||
|
efi_rts_work.status = EFI_DEVICE_ERROR; \
|
||||||
goto exit; \
|
goto exit; \
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
|
@@ -198,8 +198,8 @@ static __always_inline int __calc_tpm2_event_size(struct tcg_pcr_event2_head *ev
|
|||||||
* The loop below will unmap these fields if the log is larger than
|
* The loop below will unmap these fields if the log is larger than
|
||||||
* one page, so save them here for reference:
|
* one page, so save them here for reference:
|
||||||
*/
|
*/
|
||||||
count = READ_ONCE(event->count);
|
count = event->count;
|
||||||
event_type = READ_ONCE(event->event_type);
|
event_type = event->event_type;
|
||||||
|
|
||||||
/* Verify that it's the log header */
|
/* Verify that it's the log header */
|
||||||
if (event_header->pcr_idx != 0 ||
|
if (event_header->pcr_idx != 0 ||
|
||||||
|
Reference in New Issue
Block a user