media: rcar-vin: Fix error paths for rvin_mc_init()
authorNiklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Fri, 9 Jul 2021 14:25:51 +0000 (16:25 +0200)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Thu, 30 Sep 2021 08:07:33 +0000 (10:07 +0200)
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>
drivers/media/platform/rcar-vin/rcar-core.c

index 6ea561f..bea3880 100644 (file)
@@ -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;
 }