diff options
author | Philip Rakity <prakity@nvidia.com> | 2014-01-17 10:05:07 +0000 |
---|---|---|
committer | Laxman Dewangan <ldewangan@nvidia.com> | 2014-01-19 00:56:20 -0800 |
commit | 7ff19c0709b051b2a869485b1f0e1541893a3b4d (patch) | |
tree | 60f686fd1397ae6144f28efcc019a91e66379e2d /drivers | |
parent | 65569df9766b57a4d3dc6b232b963520fe5d1513 (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.c | 4 |
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: |