summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorPhilip Rakity <prakity@nvidia.com>2014-01-17 10:05:07 +0000
committerLaxman Dewangan <ldewangan@nvidia.com>2014-01-19 00:56:20 -0800
commit7ff19c0709b051b2a869485b1f0e1541893a3b4d (patch)
tree60f686fd1397ae6144f28efcc019a91e66379e2d /drivers
parent65569df9766b57a4d3dc6b232b963520fe5d1513 (diff)
power: max17048: fix crash if battery not recognised
probe() calls max17048_check_battery() which returns an error if battery version is not correct. This check returns a int but probe() uses return value as unsigned. This causes version<0 check to not work. fixed return goto on error as code was calling power_supply_unregister() twice on error. This fixes the kernel crash I was seeing. Change-Id: Ic5eeda39a151bd643b553385faad999b89ec96ed Signed-off-by: Philip Rakity <prakity@nvidia.com> (cherry picked from commit 22664168aa1707e57927c6b8a2324db10b8cd6a8) Reviewed-on: http://git-master/r/357118 Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com> Tested-by: Laxman Dewangan <ldewangan@nvidia.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/power/max17048_battery.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/drivers/power/max17048_battery.c b/drivers/power/max17048_battery.c
index 7fddce8b08e2..e0476f3ce862 100644
--- a/drivers/power/max17048_battery.c
+++ b/drivers/power/max17048_battery.c
@@ -727,9 +727,8 @@ static int max17048_probe(struct i2c_client *client,
{
struct max17048_chip *chip;
int ret;
- uint16_t version;
+ int version;
u16 val;
-
chip = devm_kzalloc(&client->dev, sizeof(*chip), GFP_KERNEL);
if (!chip)
return -ENOMEM;
@@ -827,7 +826,6 @@ irq_clear_error:
free_irq(client->irq, chip);
irq_reg_error:
cancel_delayed_work_sync(&chip->work);
- power_supply_unregister(&chip->battery);
bg_err:
power_supply_unregister(&chip->battery);
error: