summaryrefslogtreecommitdiffstats
path: root/drivers/misc
diff options
context:
space:
mode:
authorArjan van de Ven <arjan@linux.intel.com>2008-08-23 21:45:21 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2008-08-23 21:54:00 -0700
commit83097aca8567a0bd593534853b71fe0fa9a75d69 (patch)
tree67e6c59742c26b9da073c7fea389d7ac0de4bc46 /drivers/misc
parent6450f65168bcf3c03b5fb44c2fe96682c0d3086b (diff)
downloadlinux-83097aca8567a0bd593534853b71fe0fa9a75d69.tar.gz
linux-83097aca8567a0bd593534853b71fe0fa9a75d69.tar.xz
Fix oops in acer_wmi driver (acer_wmi_init)
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>
Diffstat (limited to 'drivers/misc')
-rw-r--r--drivers/misc/acer-wmi.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/misc/acer-wmi.c b/drivers/misc/acer-wmi.c
index b2d9878dc3f0..c6c77a505ec1 100644
--- a/drivers/misc/acer-wmi.c
+++ b/drivers/misc/acer-wmi.c
@@ -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;