All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
To: Benoit Parrot <bparrot@ti.com>,
	Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	Pratyush Yadav <p.yadav@ti.com>,
	Lokesh Vutla <lokeshvutla@ti.com>,
	linux-media@vger.kernel.org
Cc: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Subject: [PATCH v2 30/35] media: ti-vpe: cal: fix ctx uninitialization
Date: Tue, 20 Apr 2021 15:04:28 +0300	[thread overview]
Message-ID: <20210420120433.902394-31-tomi.valkeinen@ideasonboard.com> (raw)
In-Reply-To: <20210420120433.902394-1-tomi.valkeinen@ideasonboard.com>

Somewhere along the way the context uninitialization has gone a bit odd:

* We have cal_ctx_create() but no matching destroy call, but we still
need to call cal_ctx_v4l2_cleanup() for each context.

* We have cal_media_cleanup() which calls cal_ctx_v4l2_cleanup() for all
contexts, but cal_media_init() is not where the contexts are created.

* The order of uninit steps in cal_remove() is different than the error
handling path in cal_probe().

* cal_probe()'s error handling calls cal_ctx_v4l2_cleanup() for each
context, but also calls cal_media_clean(), doing the same context
cleanup twice.

So fix these, by introducing cal_ctx_destroy(), and using that in
appropriate places instead of calling cal_ctx_v4l2_cleanup() in
cal_media_clean(). Also use normal kzalloc (and kfree) instead of devm
version as we anyway do manual cleanup for each context.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
---
 drivers/media/platform/ti-vpe/cal.c | 21 +++++++++++++--------
 1 file changed, 13 insertions(+), 8 deletions(-)

diff --git a/drivers/media/platform/ti-vpe/cal.c b/drivers/media/platform/ti-vpe/cal.c
index bb99d0ce796f..888706187fd1 100644
--- a/drivers/media/platform/ti-vpe/cal.c
+++ b/drivers/media/platform/ti-vpe/cal.c
@@ -894,11 +894,6 @@ static int cal_media_init(struct cal_dev *cal)
  */
 static void cal_media_cleanup(struct cal_dev *cal)
 {
-	unsigned int i;
-
-	for (i = 0; i < cal->num_contexts; i++)
-		cal_ctx_v4l2_cleanup(cal->ctx[i]);
-
 	v4l2_device_unregister(&cal->v4l2_dev);
 	media_device_cleanup(&cal->mdev);
 
@@ -915,7 +910,7 @@ static struct cal_ctx *cal_ctx_create(struct cal_dev *cal, int inst)
 	struct cal_ctx *ctx;
 	int ret;
 
-	ctx = devm_kzalloc(cal->dev, sizeof(*ctx), GFP_KERNEL);
+	ctx = kzalloc(sizeof(*ctx), GFP_KERNEL);
 	if (!ctx)
 		return NULL;
 
@@ -934,6 +929,13 @@ static struct cal_ctx *cal_ctx_create(struct cal_dev *cal, int inst)
 	return ctx;
 }
 
+static void cal_ctx_destroy(struct cal_ctx *ctx)
+{
+	cal_ctx_v4l2_cleanup(ctx);
+
+	kfree(ctx);
+}
+
 static const struct of_device_id cal_of_match[] = {
 	{
 		.compatible = "ti,dra72-cal",
@@ -1148,7 +1150,7 @@ static int cal_probe(struct platform_device *pdev)
 
 error_context:
 	for (i = 0; i < cal->num_contexts; i++)
-		cal_ctx_v4l2_cleanup(cal->ctx[i]);
+		cal_ctx_destroy(cal->ctx[i]);
 
 error_camerarx:
 	for (i = 0; i < cal->data->num_csi2_phy; i++)
@@ -1176,11 +1178,14 @@ static int cal_remove(struct platform_device *pdev)
 	for (i = 0; i < cal->data->num_csi2_phy; i++)
 		cal_camerarx_disable(cal->phy[i]);
 
-	cal_media_cleanup(cal);
+	for (i = 0; i < cal->num_contexts; i++)
+		cal_ctx_destroy(cal->ctx[i]);
 
 	for (i = 0; i < cal->data->num_csi2_phy; i++)
 		cal_camerarx_destroy(cal->phy[i]);
 
+	cal_media_cleanup(cal);
+
 	pm_runtime_put_sync(&pdev->dev);
 	pm_runtime_disable(&pdev->dev);
 
-- 
2.25.1


  parent reply	other threads:[~2021-04-20 12:05 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-20 12:03 [PATCH v2 00/35] media: ti-vpe: cal: prepare for multistream support Tomi Valkeinen
2021-04-20 12:03 ` [PATCH v2 01/35] media: ti-vpe: cal: add g/s_parm for legacy API Tomi Valkeinen
2021-04-20 12:04 ` [PATCH v2 02/35] media: ti-vpe: cal: fix error handling in cal_camerarx_create Tomi Valkeinen
2021-04-20 12:04 ` [PATCH v2 03/35] media: ti-vpe: cal: remove unused cal_camerarx->dev field Tomi Valkeinen
2021-04-20 12:04 ` [PATCH v2 04/35] media: ti-vpe: cal: rename "sensor" to "source" Tomi Valkeinen
2021-04-20 12:04 ` [PATCH v2 05/35] media: ti-vpe: cal: move global config from cal_ctx_wr_dma_config to runtime resume Tomi Valkeinen
2021-04-20 12:04 ` [PATCH v2 06/35] media: ti-vpe: cal: use v4l2_get_link_freq Tomi Valkeinen
2021-04-20 12:04 ` [PATCH v2 07/35] media: ti-vpe: cal: add cal_ctx_prepare/unprepare Tomi Valkeinen
2021-04-20 12:04 ` [PATCH v2 08/35] media: ti-vpe: cal: change index and cport to u8 Tomi Valkeinen
2021-04-20 12:04 ` [PATCH v2 09/35] media: ti-vpe: cal: Add CSI2 context Tomi Valkeinen
2021-04-20 12:04 ` [PATCH v2 10/35] media: ti-vpe: cal: Add pixel processing context Tomi Valkeinen
2021-04-20 12:04 ` [PATCH v2 11/35] media: ti-vpe: cal: rename cal_ctx->index to dma_ctx Tomi Valkeinen
2021-04-20 12:04 ` [PATCH v2 12/35] media: ti-vpe: cal: rename CAL_HL_IRQ_MASK Tomi Valkeinen
2021-04-20 12:04 ` [PATCH v2 13/35] media: ti-vpe: cal: clean up CAL_CSI2_VC_IRQ_* macros Tomi Valkeinen
2021-04-20 12:04 ` [PATCH v2 14/35] media: ti-vpe: cal: catch VC errors Tomi Valkeinen
2021-04-20 12:04 ` [PATCH v2 15/35] media: ti-vpe: cal: remove wait when stopping camerarx Tomi Valkeinen
2021-04-20 12:04 ` [PATCH v2 16/35] media: ti-vpe: cal: disable csi2 ctx and pix proc at ctx_stop Tomi Valkeinen
2021-04-20 12:04 ` [PATCH v2 17/35] media: ti-vpe: cal: allocate pix proc dynamically Tomi Valkeinen
2021-04-20 12:04 ` [PATCH v2 18/35] media: ti-vpe: cal: add 'use_pix_proc' field Tomi Valkeinen
2021-04-20 12:04 ` [PATCH v2 19/35] media: ti-vpe: cal: add cal_ctx_wr_dma_enable and fix a race Tomi Valkeinen
2021-04-20 12:04 ` [PATCH v2 20/35] media: ti-vpe: cal: add vc and datatype fields to cal_ctx Tomi Valkeinen
2021-04-20 12:04 ` [PATCH v2 21/35] media: ti-vpe: cal: handle cal_ctx_v4l2_register error Tomi Valkeinen
2021-04-20 12:04 ` [PATCH v2 22/35] media: ti-vpe: cal: set field always to V4L2_FIELD_NONE Tomi Valkeinen
2021-04-20 12:04 ` [PATCH v2 23/35] media: ti-vpe: cal: fix typo in a comment Tomi Valkeinen
2021-04-20 12:04 ` [PATCH v2 24/35] media: ti-vpe: cal: add mbus_code support to cal_mc_enum_fmt_vid_cap Tomi Valkeinen
2021-04-20 12:04 ` [PATCH v2 25/35] media: ti-vpe: cal: rename non-MC funcs to cal_legacy_* Tomi Valkeinen
2021-04-20 12:04 ` [PATCH v2 26/35] media: ti-vpe: cal: init ctx->v_fmt correctly in MC mode Tomi Valkeinen
2021-04-20 12:04 ` [PATCH v2 27/35] media: ti-vpe: cal: remove cal_camerarx->fmtinfo Tomi Valkeinen
2021-04-20 12:04 ` [PATCH v2 28/35] media: ti-vpe: cal: support 8 DMA contexts Tomi Valkeinen
2021-04-20 12:04 ` [PATCH v2 29/35] media: ti-vpe: cal: cleanup phy iteration in cal_remove Tomi Valkeinen
2021-04-20 12:04 ` Tomi Valkeinen [this message]
2021-04-20 12:04 ` [PATCH v2 31/35] media: ti-vpe: cal: fix queuing of the initial buffer Tomi Valkeinen
2021-04-20 12:04 ` [PATCH v2 32/35] media: ti-vpe: cal: use CSI-2 frame number Tomi Valkeinen
2021-04-20 12:04 ` [PATCH v2 33/35] media: ti-vpe: cal: add camerarx locking Tomi Valkeinen
2021-04-20 12:04 ` [PATCH v2 34/35] media: ti-vpe: cal: add camerarx enable/disable refcounting Tomi Valkeinen
2021-04-20 12:04 ` [PATCH v2 35/35] media: ti-vpe: cal: allow more than 1 source pads Tomi Valkeinen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210420120433.902394-31-tomi.valkeinen@ideasonboard.com \
    --to=tomi.valkeinen@ideasonboard.com \
    --cc=bparrot@ti.com \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-media@vger.kernel.org \
    --cc=lokeshvutla@ti.com \
    --cc=p.yadav@ti.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.