summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--hwmon-applesmc-Check-key-count-before-proceeding.patch49
-rw-r--r--kernel.spec7
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 000000000..76e7fe25f
--- /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@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@fedoraproject.org>
+Suggested-by: Guenter Roeck <linux@roeck-us.net>
+Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
+Cc: stable@vger.kernel.org
+Signed-off-by: Guenter Roeck <linux@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 7b2777393..0213ebb61 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -747,6 +747,9 @@ Patch25109: skge-fix-invalid-value-passed-to-pci_unmap_sigle.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
@@ -1455,6 +1458,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
@@ -2260,6 +2266,7 @@ fi
# || ||
%changelog
* Fri Sep 27 2013 Josh Boyer <jwboyer@fedoraproject.org>
+- Add patch to fix oops from applesmc (rhbz 1011719)
- Add patches to fix soft lockup from elevator changes (rhbz 902012)
* Thu Sep 26 2013 Josh Boyer <jwboyer@fedoraproject.org> - 3.12.0-0.rc2.git2.1