power:pmic: prevent data abort for pmic bat command
authorPiotr Wilczek <p.wilczek@samsung.com>
Thu, 26 Sep 2013 12:43:35 +0000 (14:43 +0200)
committerTom Rini <trini@ti.com>
Mon, 7 Oct 2013 12:21:13 +0000 (08:21 -0400)
This patch prevents data abort when pmic bat command is called
on non-batery pmic device.

Signed-off-by: Piotr Wilczek <p.wilczek@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
CC: Lukasz Majewski <l.majewski@samsung.com>
CC: Minkyu Kang <mk7.kang@samsung.com>
drivers/power/power_core.c

index d79971ba884154a469d602d806420e866509b08e..29ccc831af2d80c3bcc4cadb5f80b95170088015 100644 (file)
@@ -184,18 +184,21 @@ int do_pmic(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                if (argc < 4)
                        return CMD_RET_USAGE;
 
+               if (!p->pbat) {
+                       printf("%s is not a battery\n", p->name);
+                       return CMD_RET_FAILURE;
+               }
+
                if (strcmp(argv[3], "state") == 0)
                        p->fg->fg_battery_check(p->pbat->fg, p);
 
                if (strcmp(argv[3], "charge") == 0) {
-                       if (p->pbat) {
-                               printf("BAT: %s charging (ctrl+c to break)\n",
-                                      p->name);
-                               if (p->low_power_mode)
-                                       p->low_power_mode();
-                               if (p->pbat->battery_charge)
-                                       p->pbat->battery_charge(p);
-                       }
+                       printf("BAT: %s charging (ctrl+c to break)\n",
+                              p->name);
+                       if (p->low_power_mode)
+                               p->low_power_mode();
+                       if (p->pbat->battery_charge)
+                               p->pbat->battery_charge(p);
                }
 
                return CMD_RET_SUCCESS;