[v2,02/11] rcar-vin: Fix error paths for rvin_mc_init()
Commit Message
The error paths of rvin_mc_init() do not clean up properly, fix this.
Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Reviewed-by: Jacopo Mondi <jacopo+renesas@jmondi.org>
---
drivers/media/platform/rcar-vin/rcar-core.c | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
@@ -946,17 +946,23 @@ static int rvin_mc_init(struct rvin_dev *vin)
if (ret)
return ret;
+ ret = rvin_create_controls(vin, NULL);
+ if (ret < 0)
+ return ret;
+
ret = rvin_group_get(vin);
if (ret)
- return ret;
+ goto err_controls;
ret = rvin_mc_parse_of_graph(vin);
if (ret)
- rvin_group_put(vin);
+ goto err_group;
- ret = rvin_create_controls(vin, NULL);
- if (ret < 0)
- return ret;
+ return 0;
+err_group:
+ rvin_group_put(vin);
+err_controls:
+ rvin_free_controls(vin);
return ret;
}