]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
media: rcar-vin: Cleanup notifier in error path
authorJacopo Mondi <jacopo+renesas@jmondi.org>
Tue, 12 Jun 2018 09:43:26 +0000 (05:43 -0400)
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Wed, 4 Jul 2018 13:18:16 +0000 (09:18 -0400)
During the notifier initialization, memory for the list of associated async
subdevices is reserved during the fwnode endpoint parsing from the v4l2-async
framework. If the notifier registration fails, that memory should be released
and the notifier 'cleaned up'.

Catch the notifier registration error and perform the cleanup both for the
group and the parallel notifiers.

Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org>
Acked-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
drivers/media/platform/rcar-vin/rcar-core.c

index 735e6ac66e4843cdb427b224c5f9ee1ad7114962..87b29be2ea9eb5fa75723c17cbfb9d48c90ec833 100644 (file)
@@ -571,6 +571,7 @@ static int rvin_parallel_graph_init(struct rvin_dev *vin)
        ret = v4l2_async_notifier_register(&vin->v4l2_dev, &vin->notifier);
        if (ret < 0) {
                vin_err(vin, "Notifier registration failed\n");
+               v4l2_async_notifier_cleanup(&vin->group->notifier);
                return ret;
        }
 
@@ -773,6 +774,7 @@ static int rvin_mc_parse_of_graph(struct rvin_dev *vin)
                                           &vin->group->notifier);
        if (ret < 0) {
                vin_err(vin, "Notifier registration failed\n");
+               v4l2_async_notifier_cleanup(&vin->group->notifier);
                return ret;
        }