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>
This commit is contained in:
parent
6450f65168
commit
83097aca85
1 changed files with 5 additions and 0 deletions
|
@ -192,6 +192,9 @@ static struct quirk_entry *quirks;
|
||||||
|
|
||||||
static void set_quirks(void)
|
static void set_quirks(void)
|
||||||
{
|
{
|
||||||
|
if (!interface)
|
||||||
|
return;
|
||||||
|
|
||||||
if (quirks->mailled)
|
if (quirks->mailled)
|
||||||
interface->capability |= ACER_CAP_MAILLED;
|
interface->capability |= ACER_CAP_MAILLED;
|
||||||
|
|
||||||
|
@ -1237,6 +1240,8 @@ static int __init acer_wmi_init(void)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
set_quirks();
|
||||||
|
|
||||||
if (platform_driver_register(&acer_platform_driver)) {
|
if (platform_driver_register(&acer_platform_driver)) {
|
||||||
printk(ACER_ERR "Unable to register platform driver.\n");
|
printk(ACER_ERR "Unable to register platform driver.\n");
|
||||||
goto error_platform_register;
|
goto error_platform_register;
|
||||||
|
|
Loading…
Reference in a new issue