]> git.karo-electronics.de Git - linux-beck.git/commitdiff
x86/platform/goldfish: Prevent unconditional loading
authorThomas Gleixner <tglx@linutronix.de>
Wed, 15 Feb 2017 10:11:50 +0000 (11:11 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 26 Feb 2017 10:10:52 +0000 (11:10 +0100)
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
arch/x86/platform/goldfish/goldfish.c

index 922dec8fa07e185259f7993437b9a3eda932c8be..65b05ba6ef981e1e21f021b2be4293dfb946d6b6 100644 (file)
@@ -1391,6 +1391,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
                        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
index 1693107a518e7560f774df657bcc464296e6f45f..0d17c0aafeb142310152b802a18b969c52bd89f9 100644 (file)
@@ -42,10 +42,22 @@ static struct resource goldfish_pdev_bus_resources[] = {
        }
 };
 
+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);