acpi: Ignore acpi_rsdp kernel parameter when securelevel is set
authorJosh Boyer <jwboyer@redhat.com>
Mon, 25 Jun 2012 23:57:30 +0000 (19:57 -0400)
committerAurelien Jarno <aurel32@debian.org>
Fri, 2 Mar 2018 07:52:22 +0000 (07:52 +0000)
This option allows userspace to pass the RSDP address to the kernel, which
makes it possible for a user to execute arbitrary code in the kernel.
Disable this when securelevel is set.

Signed-off-by: Josh Boyer <jwboyer@redhat.com>
Gbp-Pq: Topic features/all/securelevel
Gbp-Pq: Name acpi-ignore-acpi_rsdp-kernel-parameter-when-securele.patch

drivers/acpi/osl.c

index 416953a4251094ce2066d724c1d88583b8e89705..f94d372c67ceae6911c9c8edf180f92eb8ed7ca8 100644 (file)
@@ -40,6 +40,7 @@
 #include <linux/list.h>
 #include <linux/jiffies.h>
 #include <linux/semaphore.h>
+#include <linux/security.h>
 
 #include <asm/io.h>
 #include <asm/uaccess.h>
@@ -191,7 +192,7 @@ early_param("acpi_rsdp", setup_acpi_rsdp);
 acpi_physical_address __init acpi_os_get_root_pointer(void)
 {
 #ifdef CONFIG_KEXEC
-       if (acpi_rsdp)
+       if (acpi_rsdp && (get_securelevel() <= 0))
                return acpi_rsdp;
 #endif