[lkml]   [2018]   [Sep]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Patch in this message
Subject[PATCH V3 5/5] x86/efi: Introduce EFI_WARN_ON_ILLEGAL_ACCESS
From: Sai Praneeth <>

There may exist some buggy UEFI firmware implementations that might
access efi regions other than EFI_RUNTIME_SERVICES_<CODE/DATA> even
after the kernel has assumed control of the platform. This violates UEFI

If selected, this debug option will print a warning message if the UEFI
firmware tries to access any memory region which it shouldn't. Along
with the warning, the efi page fault handler will also try to recover
from the page fault triggered by the firmware so that the machine
doesn't hang.

Suggested-by: Matt Fleming <>
Based-on-code-from: Ricardo Neri <>
Signed-off-by: Sai Praneeth Prakhya <>
Cc: Al Stone <>
Cc: Borislav Petkov <>
Cc: Ingo Molnar <>
Cc: Andy Lutomirski <>
Cc: Bhupesh Sharma <>
Cc: Thomas Gleixner <>
Cc: Peter Zijlstra <>
Cc: Ard Biesheuvel <>
arch/x86/Kconfig | 17 +++++++++++++++++
1 file changed, 17 insertions(+)

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index f1dbb4ee19d7..7dc270c17d0b 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -1957,6 +1957,23 @@ config EFI_MIXED

If unsure, say N.

+ bool "Warn about illegal memory accesses by firmware" if EXPERT
+ depends on EFI
+ help
+ Enable this debug feature so that the kernel can detect illegal
+ memory accesses by firmware and issue a warning. Also,
+ 1. If the illegally accessed region is any region other than
+ EFI_RUNTIME_SERVICES_<CODE/DATA>, then the kernel freezes
+ efi_rts_wq and schedules a new process. Also, it disables EFI
+ Runtime Services, so that it will never again call buggy firmware.
+ 2. If the illegal access is by efi_reset_system(), then the
+ platform is rebooted through BIOS.
+ Please see the UEFI specification for details on the expectations
+ of memory usage.
+ If unsure, say N.
config SECCOMP
def_bool y
prompt "Enable seccomp to safely compute untrusted bytecode"
 \ /
  Last update: 2018-09-05 00:14    [W:0.055 / U:1.784 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site