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>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
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;
}