mirror of
https://abf.rosa.ru/djam/kernel-5.13.git
synced 2025-02-25 16:12:50 +00:00
79 lines
2.7 KiB
Diff
79 lines
2.7 KiB
Diff
From 47512cfd0d7a8bd6ab71d01cd89fca19eb2093eb Mon Sep 17 00:00:00 2001
|
|
From: Thomas Gleixner <tglx@linutronix.de>
|
|
Date: Wed, 15 Feb 2017 11:11:50 +0100
|
|
Subject: x86/platform/goldfish: Prevent unconditional loading
|
|
|
|
From: Thomas Gleixner <tglx@linutronix.de>
|
|
|
|
commit 47512cfd0d7a8bd6ab71d01cd89fca19eb2093eb upstream.
|
|
|
|
The goldfish platform code registers the platform device unconditionally
|
|
which causes havoc in several ways if the goldfish_pdev_bus driver is
|
|
enabled:
|
|
|
|
- Access to the hardcoded physical memory region, which is either not
|
|
available or contains stuff which is completely unrelated.
|
|
|
|
- Prevents that the interrupt of the serial port can be requested
|
|
|
|
- In case of a spurious interrupt it goes into a infinite loop in the
|
|
interrupt handler of the pdev_bus driver (which needs to be fixed
|
|
seperately).
|
|
|
|
Add a 'goldfish' command line option to make the registration opt-in when
|
|
the platform is compiled in.
|
|
|
|
I'm seriously grumpy about this engineering trainwreck, which has seven
|
|
SOBs from Intel developers for 50 lines of code. And none of them figured
|
|
out that this is broken. Impressive fail!
|
|
|
|
Fixes: ddd70cf93d78 ("goldfish: platform device for x86")
|
|
Reported-by: Gabriel C <nix.or.die@gmail.com>
|
|
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
|
Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
|
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
|
|
|
---
|
|
Documentation/kernel-parameters.txt | 4 ++++
|
|
arch/x86/platform/goldfish/goldfish.c | 14 +++++++++++++-
|
|
2 files changed, 17 insertions(+), 1 deletion(-)
|
|
|
|
--- a/Documentation/kernel-parameters.txt
|
|
+++ b/Documentation/kernel-parameters.txt
|
|
@@ -1391,6 +1391,10 @@ bytes respectively. Such letter suffixes
|
|
When zero, profiling data is discarded and associated
|
|
debugfs files are removed at module unload time.
|
|
|
|
+ goldfish [X86] Enable the goldfish android emulator platform.
|
|
+ Don't use this when you are not running on the
|
|
+ android emulator
|
|
+
|
|
gpt [EFI] Forces disk with valid GPT signature but
|
|
invalid Protective MBR to be treated as GPT. If the
|
|
primary GPT is corrupted, it enables the backup/alternate
|
|
--- a/arch/x86/platform/goldfish/goldfish.c
|
|
+++ b/arch/x86/platform/goldfish/goldfish.c
|
|
@@ -42,10 +42,22 @@ static struct resource goldfish_pdev_bus
|
|
}
|
|
};
|
|
|
|
+static bool goldfish_enable __initdata;
|
|
+
|
|
+static int __init goldfish_setup(char *str)
|
|
+{
|
|
+ goldfish_enable = true;
|
|
+ return 0;
|
|
+}
|
|
+__setup("goldfish", goldfish_setup);
|
|
+
|
|
static int __init goldfish_init(void)
|
|
{
|
|
+ if (!goldfish_enable)
|
|
+ return -ENODEV;
|
|
+
|
|
platform_device_register_simple("goldfish_pdev_bus", -1,
|
|
- goldfish_pdev_bus_resources, 2);
|
|
+ goldfish_pdev_bus_resources, 2);
|
|
return 0;
|
|
}
|
|
device_initcall(goldfish_init);
|