Skip to content

Commit d7f9730

Browse files
KAGA-KOKOgregkh
authored andcommitted
x86/platform/goldfish: Prevent unconditional loading
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: ddd70cf ("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>
1 parent 67f47e5 commit d7f9730

2 files changed

Lines changed: 17 additions & 1 deletion

File tree

Documentation/kernel-parameters.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1255,6 +1255,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
12551255
When zero, profiling data is discarded and associated
12561256
debugfs files are removed at module unload time.
12571257

1258+
goldfish [X86] Enable the goldfish android emulator platform.
1259+
Don't use this when you are not running on the
1260+
android emulator
1261+
12581262
gpt [EFI] Forces disk with valid GPT signature but
12591263
invalid Protective MBR to be treated as GPT. If the
12601264
primary GPT is corrupted, it enables the backup/alternate

arch/x86/platform/goldfish/goldfish.c

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,22 @@ static struct resource goldfish_pdev_bus_resources[] = {
4242
}
4343
};
4444

45+
static bool goldfish_enable __initdata;
46+
47+
static int __init goldfish_setup(char *str)
48+
{
49+
goldfish_enable = true;
50+
return 0;
51+
}
52+
__setup("goldfish", goldfish_setup);
53+
4554
static int __init goldfish_init(void)
4655
{
56+
if (!goldfish_enable)
57+
return -ENODEV;
58+
4759
platform_device_register_simple("goldfish_pdev_bus", -1,
48-
goldfish_pdev_bus_resources, 2);
60+
goldfish_pdev_bus_resources, 2);
4961
return 0;
5062
}
5163
device_initcall(goldfish_init);

0 commit comments

Comments
 (0)