From 7ff19c0709b051b2a869485b1f0e1541893a3b4d Mon Sep 17 00:00:00 2001 From: Philip Rakity Date: Fri, 17 Jan 2014 10:05:07 +0000 Subject: 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 (cherry picked from commit 22664168aa1707e57927c6b8a2324db10b8cd6a8) Reviewed-on: http://git-master/r/357118 Reviewed-by: Laxman Dewangan Tested-by: Laxman Dewangan --- drivers/power/max17048_battery.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'drivers') 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: -- cgit v1.2.3