Browse Source

Merge tag 'platform-drivers-x86-v4.17-4' of git://git.infradead.org/linux-platform-drivers-x86

Pull x86 platform driver fix from Andy Shevchenko:
 "Fix NULL pointer dereference in asus-wmi on rfkill cleanup.

  The effective change is just one new condition - two lines of code.
  But it required moving one static helper function, which is why the
  diff looks a bit bigger"

* tag 'platform-drivers-x86-v4.17-4' of git://git.infradead.org/linux-platform-drivers-x86:
  platform/x86: asus-wmi: Fix NULL pointer dereference
Linus Torvalds 7 years ago
parent
commit
dd52cb8790
1 changed files with 13 additions and 10 deletions
  1. 13 10
      drivers/platform/x86/asus-wmi.c

+ 13 - 10
drivers/platform/x86/asus-wmi.c

@@ -163,6 +163,16 @@ MODULE_LICENSE("GPL");
 
 
 static const char * const ashs_ids[] = { "ATK4001", "ATK4002", NULL };
 static const char * const ashs_ids[] = { "ATK4001", "ATK4002", NULL };
 
 
+static bool ashs_present(void)
+{
+	int i = 0;
+	while (ashs_ids[i]) {
+		if (acpi_dev_found(ashs_ids[i++]))
+			return true;
+	}
+	return false;
+}
+
 struct bios_args {
 struct bios_args {
 	u32 arg0;
 	u32 arg0;
 	u32 arg1;
 	u32 arg1;
@@ -1025,6 +1035,9 @@ static int asus_new_rfkill(struct asus_wmi *asus,
 
 
 static void asus_wmi_rfkill_exit(struct asus_wmi *asus)
 static void asus_wmi_rfkill_exit(struct asus_wmi *asus)
 {
 {
+	if (asus->driver->wlan_ctrl_by_user && ashs_present())
+		return;
+
 	asus_unregister_rfkill_notifier(asus, "\\_SB.PCI0.P0P5");
 	asus_unregister_rfkill_notifier(asus, "\\_SB.PCI0.P0P5");
 	asus_unregister_rfkill_notifier(asus, "\\_SB.PCI0.P0P6");
 	asus_unregister_rfkill_notifier(asus, "\\_SB.PCI0.P0P6");
 	asus_unregister_rfkill_notifier(asus, "\\_SB.PCI0.P0P7");
 	asus_unregister_rfkill_notifier(asus, "\\_SB.PCI0.P0P7");
@@ -2121,16 +2134,6 @@ static int asus_wmi_fan_init(struct asus_wmi *asus)
 	return 0;
 	return 0;
 }
 }
 
 
-static bool ashs_present(void)
-{
-	int i = 0;
-	while (ashs_ids[i]) {
-		if (acpi_dev_found(ashs_ids[i++]))
-			return true;
-	}
-	return false;
-}
-
 /*
 /*
  * WMI Driver
  * WMI Driver
  */
  */