aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/greybus/power_supply.c
diff options
context:
space:
mode:
authorRui Miguel Silva <rui.silva@linaro.org>2016-01-08 13:53:42 +0000
committerGreg Kroah-Hartman <gregkh@google.com>2016-01-11 19:18:14 -0800
commit7ccac20d59ca45a2efea93a24a99d57022ff8911 (patch)
tree5112bcbb75c187e5b5d50082be649173160e5378 /drivers/staging/greybus/power_supply.c
parentgreybus: power_supply: fix lock imbalance in init error path (diff)
downloadlinux-dev-7ccac20d59ca45a2efea93a24a99d57022ff8911.tar.xz
linux-dev-7ccac20d59ca45a2efea93a24a99d57022ff8911.zip
greybus: power_supply: do not release failed supply alloc
If allocation of memory for each supply fail, we should get out of release any individual supply. Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org> Reported-by: Johan Hovold <johan@hovoldconsulting.com> Reviewed-by: Johan Hovold <johan@hovoldconsulting.com> Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Diffstat (limited to 'drivers/staging/greybus/power_supply.c')
-rw-r--r--drivers/staging/greybus/power_supply.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/staging/greybus/power_supply.c b/drivers/staging/greybus/power_supply.c
index 1f3884bccf97..1ce57f6333da 100644
--- a/drivers/staging/greybus/power_supply.c
+++ b/drivers/staging/greybus/power_supply.c
@@ -569,6 +569,9 @@ static void _gb_power_supplies_release(struct gb_power_supplies *supplies)
{
int i;
+ if (!supplies->supply)
+ return;
+
mutex_lock(&supplies->supplies_lock);
for (i = 0; i < supplies->supplies_count; i++)
_gb_power_supply_release(&supplies->supply[i]);