diff options
| -rw-r--r-- | drivers/hwmon/applesmc.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/hwmon/applesmc.c b/drivers/hwmon/applesmc.c index 62c2e32e25ef..98814d12a604 100644 --- a/drivers/hwmon/applesmc.c +++ b/drivers/hwmon/applesmc.c | |||
| @@ -525,16 +525,25 @@ static int applesmc_init_smcreg_try(void) | |||
| 525 | { | 525 | { |
| 526 | struct applesmc_registers *s = &smcreg; | 526 | struct applesmc_registers *s = &smcreg; |
| 527 | bool left_light_sensor, right_light_sensor; | 527 | bool left_light_sensor, right_light_sensor; |
| 528 | unsigned int count; | ||
| 528 | u8 tmp[1]; | 529 | u8 tmp[1]; |
| 529 | int ret; | 530 | int ret; |
| 530 | 531 | ||
| 531 | if (s->init_complete) | 532 | if (s->init_complete) |
| 532 | return 0; | 533 | return 0; |
| 533 | 534 | ||
| 534 | ret = read_register_count(&s->key_count); | 535 | ret = read_register_count(&count); |
| 535 | if (ret) | 536 | if (ret) |
| 536 | return ret; | 537 | return ret; |
| 537 | 538 | ||
| 539 | if (s->cache && s->key_count != count) { | ||
| 540 | pr_warn("key count changed from %d to %d\n", | ||
| 541 | s->key_count, count); | ||
| 542 | kfree(s->cache); | ||
| 543 | s->cache = NULL; | ||
| 544 | } | ||
| 545 | s->key_count = count; | ||
| 546 | |||
| 538 | if (!s->cache) | 547 | if (!s->cache) |
| 539 | s->cache = kcalloc(s->key_count, sizeof(*s->cache), GFP_KERNEL); | 548 | s->cache = kcalloc(s->key_count, sizeof(*s->cache), GFP_KERNEL); |
| 540 | if (!s->cache) | 549 | if (!s->cache) |
