All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sakari Ailus <sakari.ailus@linux.intel.com>
To: linux-media@vger.kernel.org
Cc: laurent.pinchart@ideasonboard.com,
	Tianshu Qiu <tian.shu.qiu@intel.com>,
	Bingbu Cao <bingbu.cao@intel.com>,
	Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>,
	Jacopo Mondi <jacopo+renesas@jmondi.org>,
	Rui Miguel Silva <rmfrfs@gmail.com>,
	Martin Kepplinger <martink@posteo.de>
Subject: [PATCH v7 17/19] media: mc: Check pad flag validity
Date: Mon,  2 Oct 2023 13:55:55 +0300	[thread overview]
Message-ID: <20231002105557.28972-18-sakari.ailus@linux.intel.com> (raw)
In-Reply-To: <20231002105557.28972-1-sakari.ailus@linux.intel.com>

Check the validity of pad flags on entity init. Exactly one of the flags
must be set.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 drivers/media/mc/mc-entity.c | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/drivers/media/mc/mc-entity.c b/drivers/media/mc/mc-entity.c
index 83468d4a440b..543a392f8635 100644
--- a/drivers/media/mc/mc-entity.c
+++ b/drivers/media/mc/mc-entity.c
@@ -197,6 +197,7 @@ int media_entity_pads_init(struct media_entity *entity, u16 num_pads,
 	struct media_device *mdev = entity->graph_obj.mdev;
 	struct media_pad *iter;
 	unsigned int i = 0;
+	int ret = 0;
 
 	if (num_pads >= MEDIA_ENTITY_MAX_PADS)
 		return -E2BIG;
@@ -210,15 +211,27 @@ int media_entity_pads_init(struct media_entity *entity, u16 num_pads,
 	media_entity_for_each_pad(entity, iter) {
 		iter->entity = entity;
 		iter->index = i++;
+
+		if (hweight32(iter->flags & (MEDIA_PAD_FL_SINK |
+					     MEDIA_PAD_FL_SOURCE)) != 1) {
+			ret = -EINVAL;
+			break;
+		}
+
 		if (mdev)
 			media_gobj_create(mdev, MEDIA_GRAPH_PAD,
 					  &iter->graph_obj);
 	}
 
+	if (ret && mdev) {
+		media_entity_for_each_pad(entity, iter)
+			media_gobj_destroy(&iter->graph_obj);
+	}
+
 	if (mdev)
 		mutex_unlock(&mdev->graph_mutex);
 
-	return 0;
+	return ret;
 }
 EXPORT_SYMBOL_GPL(media_entity_pads_init);
 
-- 
2.39.2


  parent reply	other threads:[~2023-10-02 10:56 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-02 10:55 [PATCH v7 00/19] Small fixes and cleanups (ov2740 and ccs) Sakari Ailus
2023-10-02 10:55 ` [PATCH v7 01/19] media: Documentation: Align numbered list, make it a proper ReST Sakari Ailus
2023-10-02 10:55 ` [PATCH v7 02/19] media: ccs: Fix driver quirk struct documentation Sakari Ailus
2023-10-02 10:55 ` [PATCH v7 03/19] media: ccs: Correctly initialise try compose rectangle Sakari Ailus
2023-10-02 10:55 ` [PATCH v7 04/19] media: ccs: Correct error handling in ccs_register_subdev Sakari Ailus
2023-10-02 10:55 ` [PATCH v7 05/19] media: ccs: Switch to init_cfg Sakari Ailus
2023-10-02 10:55 ` [PATCH v7 06/19] media: ccs: Rename ccs_create_subdev as ccs_init_subdev Sakari Ailus
2023-10-02 10:55 ` [PATCH v7 07/19] media: ccs: Move media_entity_pads_init to init from register Sakari Ailus
2023-10-02 10:55 ` [PATCH v7 08/19] media: ccs: Obtain media bus formats before initialising up sub-devices Sakari Ailus
2023-10-02 10:55 ` [PATCH v7 09/19] media: ccs: Use sub-device active state Sakari Ailus
2023-10-02 10:55 ` [PATCH v7 10/19] media: ccs: Partially revert "media: i2c: Use pm_runtime_resume_and_get()" Sakari Ailus
2023-10-02 10:55 ` [PATCH v7 11/19] media: ccs: Drop re-entrant s_stream support Sakari Ailus
2023-10-02 10:55 ` [PATCH v7 12/19] media: ov2740: Enable runtime PM before registering the async subdev Sakari Ailus
2023-10-02 10:55 ` [PATCH v7 13/19] media: ov2740: Use sub-device active state Sakari Ailus
2023-10-02 10:55 ` [PATCH v7 14/19] media: ov2740: Return -EPROBE_DEFER if no endpoint is found Sakari Ailus
2023-10-02 10:55 ` [PATCH v7 15/19] media: v4l: subdev: Clear frame descriptor before get_frame_desc Sakari Ailus
2023-10-02 10:55 ` [PATCH v7 16/19] media: v4l: subdev: Print debug information on frame descriptor Sakari Ailus
2023-10-02 10:55 ` Sakari Ailus [this message]
2024-02-01  9:17   ` [PATCH v7 17/19] media: mc: Check pad flag validity Sergey Senozhatsky
2024-02-01  9:22     ` Sakari Ailus
2024-02-01  9:33       ` Sergey Senozhatsky
2024-02-01 11:05         ` Sakari Ailus
2024-02-03  5:28           ` Sergey Senozhatsky
2023-10-02 10:55 ` [PATCH v7 18/19] media: Add MIPI CSI-2 generic long packet type definition Sakari Ailus
2023-10-02 10:55 ` [PATCH v7 19/19] media: Documentation: Split camera sensor documentation Sakari Ailus
2023-10-02 11:54 ` [PATCH v7 00/19] Small fixes and cleanups (ov2740 and ccs) Sakari Ailus

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=20231002105557.28972-18-sakari.ailus@linux.intel.com \
    --to=sakari.ailus@linux.intel.com \
    --cc=bingbu.cao@intel.com \
    --cc=jacopo+renesas@jmondi.org \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-media@vger.kernel.org \
    --cc=martink@posteo.de \
    --cc=rmfrfs@gmail.com \
    --cc=tian.shu.qiu@intel.com \
    --cc=tomi.valkeinen@ideasonboard.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.