From 879214aa040551c01110aff8e8ffd13c2cae5622 Mon Sep 17 00:00:00 2001 From: Josh Boyer Date: Fri, 27 Sep 2013 12:24:29 -0400 Subject: [PATCH] Add patch to fix oops from applesmc (rhbz 1011719) --- ...mc-Check-key-count-before-proceeding.patch | 49 +++++++++++++++++++ kernel.spec | 7 +++ 2 files changed, 56 insertions(+) create mode 100644 hwmon-applesmc-Check-key-count-before-proceeding.patch 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 +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: +Suggested-by: Guenter Roeck +Signed-off-by: Henrik Rydberg +Cc: stable@vger.kernel.org +Signed-off-by: Guenter Roeck +--- +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 +- 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 - 3.12.0-0.rc2.git2.1