This is an automatic generated email to let you know that the following patch 
were queued:

Subject: media: mc: Check pad flag validity
Author:  Sakari Ailus <sakari.ai...@linux.intel.com>
Date:    Tue Apr 25 12:30:45 2023 +0300

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

Signed-off-by: Sakari Ailus <sakari.ai...@linux.intel.com>
Reviewed-by: Laurent Pinchart <laurent.pinch...@ideasonboard.com>
Signed-off-by: Hans Verkuil <hverkuil-ci...@xs4all.nl>

 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);
 

_______________________________________________
linuxtv-commits mailing list
linuxtv-commits@linuxtv.org
https://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to