[kernel/f19] Add patch to fix oops from applesmc (rhbz 1011719)

Josh Boyer jwboyer at fedoraproject.org
Fri Sep 27 16:27:59 UTC 2013


commit d4ad8aae96cc4af2152b2b65f414e5fcc53399c1
Author: Josh Boyer <jwboyer at fedoraproject.org>
Date:   Fri Sep 27 12:24:29 2013 -0400

    Add patch to fix oops from applesmc (rhbz 1011719)

 ...pplesmc-Check-key-count-before-proceeding.patch |   49 ++++++++++++++++++++
 kernel.spec                                        |    7 +++
 2 files changed, 56 insertions(+), 0 deletions(-)
---
diff --git a/hwmon-applesmc-Check-key-count-before-proceeding.patch b/hwmon-applesmc-Check-key-count-before-proceeding.patch
new file mode 100644
index 0000000..76e7fe2
--- /dev/null
+++ b/hwmon-applesmc-Check-key-count-before-proceeding.patch
@@ -0,0 +1,49 @@
+From 5f4513864304672e6ea9eac60583eeac32e679f2 Mon Sep 17 00:00:00 2001
+From: Henrik Rydberg <rydberg at euromail.se>
+Date: Thu, 26 Sep 2013 06:33:16 +0000
+Subject: hwmon: (applesmc) Check key count before proceeding
+
+After reports from Chris and Josh Boyer of a rare crash in applesmc,
+Guenter pointed at the initialization problem fixed below. The patch
+has not been verified to fix the crash, but should be applied
+regardless.
+
+Reported-by: <jwboyer at fedoraproject.org>
+Suggested-by: Guenter Roeck <linux at roeck-us.net>
+Signed-off-by: Henrik Rydberg <rydberg at euromail.se>
+Cc: stable at vger.kernel.org
+Signed-off-by: Guenter Roeck <linux at roeck-us.net>
+---
+diff --git a/drivers/hwmon/applesmc.c b/drivers/hwmon/applesmc.c
+index 62c2e32..98814d1 100644
+--- a/drivers/hwmon/applesmc.c
++++ b/drivers/hwmon/applesmc.c
+@@ -525,16 +525,25 @@ static int applesmc_init_smcreg_try(void)
+ {
+ 	struct applesmc_registers *s = &smcreg;
+ 	bool left_light_sensor, right_light_sensor;
++	unsigned int count;
+ 	u8 tmp[1];
+ 	int ret;
+ 
+ 	if (s->init_complete)
+ 		return 0;
+ 
+-	ret = read_register_count(&s->key_count);
++	ret = read_register_count(&count);
+ 	if (ret)
+ 		return ret;
+ 
++	if (s->cache && s->key_count != count) {
++		pr_warn("key count changed from %d to %d\n",
++			s->key_count, count);
++		kfree(s->cache);
++		s->cache = NULL;
++	}
++	s->key_count = count;
++
+ 	if (!s->cache)
+ 		s->cache = kcalloc(s->key_count, sizeof(*s->cache), GFP_KERNEL);
+ 	if (!s->cache)
+--
+cgit v0.9.2
diff --git a/kernel.spec b/kernel.spec
index 3b6b131..2055b0e 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -777,6 +777,9 @@ Patch25113: rpc-let-xdr-layer-allocate-gssproxy-receieve-pages.patch
 Patch25114: elevator-Fix-a-race-in-elevator-switching-and-md.patch
 Patch25115: elevator-acquire-q-sysfs_lock-in-elevator_change.patch
 
+#rhbz 1011719
+Patch25116: hwmon-applesmc-Check-key-count-before-proceeding.patch
+
 # END OF PATCH DEFINITIONS
 
 %endif
@@ -1502,6 +1505,9 @@ ApplyPatch skge-fix-invalid-value-passed-to-pci_unmap_sigle.patch
 ApplyPatch elevator-Fix-a-race-in-elevator-switching-and-md.patch
 ApplyPatch elevator-acquire-q-sysfs_lock-in-elevator_change.patch
 
+#rhbz 1011719
+ApplyPatch hwmon-applesmc-Check-key-count-before-proceeding.patch
+
 # END OF PATCH APPLICATIONS
 
 %endif
@@ -2315,6 +2321,7 @@ fi
 
 %changelog
 * Fri Sep 27 2013 Josh Boyer <jwboyer at fedoraproject.org>
+- Add patch to fix oops from applesmc (rhbz 1011719)
 - Add patches to fix soft lockup from elevator changes (rhbz 902012)
 
 * Fri Sep 27 2013 Justin M. Forbes <jforbes at fedoraproject.org> - 3.11.2-200


More information about the scm-commits mailing list