Fix oops in acer_wmi driver (acer_wmi_init)
authorArjan van de Ven <arjan@linux.intel.com>
Sun, 24 Aug 2008 04:45:21 +0000 (21:45 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 24 Aug 2008 04:54:00 +0000 (21:54 -0700)
The acer_wmi driver does a DMI scan for quirks, and then sets flags into the
"interface" datastructure for some cases. However, the quirks happen real early
before "interface" is per se initialized from NULL.

The patch below 1) adds a NULL pointer check and 2) (re)runs the quirks at the
end, when "interface" has it's final value.

Reported-by: kerneloops.org
Acked-by: Carlos Corbacho <carlos@strangeworlds.co.uk>
CC: stable@vger.kernel.org
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/misc/acer-wmi.c

index b2d9878dc3f0ea606896c356ced7d942acef2106..c6c77a505ec1e621307ded371c224094b0222b13 100644 (file)
@@ -192,6 +192,9 @@ static struct quirk_entry *quirks;
 
 static void set_quirks(void)
 {
+       if (!interface)
+               return;
+
        if (quirks->mailled)
                interface->capability |= ACER_CAP_MAILLED;
 
@@ -1237,6 +1240,8 @@ static int __init acer_wmi_init(void)
                return -ENODEV;
        }
 
+       set_quirks();
+
        if (platform_driver_register(&acer_platform_driver)) {
                printk(ACER_ERR "Unable to register platform driver.\n");
                goto error_platform_register;