Commit ff85f723 authored by Rui Miguel Silva's avatar Rui Miguel Silva Committed by Greg Kroah-Hartman

greybus: power_supply: fix unregister on error path

If setup fail the release for each supply needs to know the status at
unregister time. So, add the field to the structure, update it at setup
time and use it at release.
Signed-off-by: default avatarRui Miguel Silva <rui.silva@linaro.org>
Reported-by: default avatarJohan Hovold <johan@hovoldconsulting.com>
Reviewed-by: default avatarJohan Hovold <johan@hovoldconsulting.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@google.com>
parent 7ccac20d
......@@ -25,6 +25,7 @@ struct gb_power_supply_prop {
struct gb_power_supply {
u8 id;
bool registered;
#ifdef DRIVER_OWNS_PSY_STRUCT
struct power_supply psy;
#define to_gb_power_supply(x) container_of(x, struct gb_power_supply, psy)
......@@ -557,9 +558,11 @@ static void _gb_power_supply_release(struct gb_power_supply *gbpsy)
cancel_delayed_work_sync(&gbpsy->work);
#ifdef DRIVER_OWNS_PSY_STRUCT
power_supply_unregister(&gbpsy->psy);
if (gbpsy->registered)
power_supply_unregister(&gbpsy->psy);
#else
power_supply_unregister(gbpsy->psy);
if (gbpsy->registered)
power_supply_unregister(gbpsy->psy);
#endif
_gb_power_supply_free(gbpsy);
......@@ -628,6 +631,9 @@ static int gb_power_supply_config(struct gb_power_supplies *supplies, int id)
schedule_delayed_work(&gbpsy->work, 0);
out:
/* if everything went fine just mark it for release code to know */
if (ret == 0)
gbpsy->registered = true;
return ret;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment