Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 83097aca authored by Arjan van de Ven's avatar Arjan van de Ven Committed by Linus Torvalds
Browse files

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: default avatarCarlos Corbacho <carlos@strangeworlds.co.uk>
CC: stable@vger.kernel.org
Signed-off-by: default avatarArjan van de Ven <arjan@linux.intel.com>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 6450f651
Loading
Loading
Loading
Loading
+5 −0
Original line number Original line Diff line number Diff line
@@ -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;