[PATCH v5 04/10] media: rcar-vin: Cleanup notifier in error path

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxx>

---
v5:
- new patch

---
 drivers/media/platform/rcar-vin/rcar-core.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/drivers/media/platform/rcar-vin/rcar-core.c b/drivers/media/platform/rcar-vin/rcar-core.c
index d3aadf3..f7a28e9 100644
--- a/drivers/media/platform/rcar-vin/rcar-core.c
+++ b/drivers/media/platform/rcar-vin/rcar-core.c
@@ -573,10 +573,15 @@ 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");
-		return ret;
+		goto error_notifier_cleanup;
 	}

 	return 0;
+
+error_notifier_cleanup:
+	v4l2_async_notifier_cleanup(&vin->group->notifier);
+
+	return ret;
 }

 /* -----------------------------------------------------------------------------
@@ -775,10 +780,15 @@ static int rvin_mc_parse_of_graph(struct rvin_dev *vin)
 					   &vin->group->notifier);
 	if (ret < 0) {
 		vin_err(vin, "Notifier registration failed\n");
-		return ret;
+		goto error_notifier_cleanup;
 	}

 	return 0;
+
+error_notifier_cleanup:
+	v4l2_async_notifier_cleanup(&vin->group->notifier);
+
+	return ret;
 }

 static int rvin_mc_init(struct rvin_dev *vin)
--
2.7.4




[Index of Archives]     [Linux Samsung SOC]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux