]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
v4l2-subdev: Return -EOPNOTSUPP for unsupported pad type in call_get_frame_desc()
authorLad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Mon, 7 Oct 2024 12:38:09 +0000 (13:38 +0100)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Wed, 16 Oct 2024 07:32:41 +0000 (09:32 +0200)
The `get_frame_desc()` operation should always be called on a source pad,
which is indicated by the `MEDIA_PAD_FL_SOURCE` flag. This patch adds a
check in `call_get_frame_desc()` to ensure that the `MEDIA_PAD_FL_SOURCE`
flag is set for the pad before invoking `get_frame_desc()`. If the pad is
not a source pad, the function will return an `-EOPNOTSUPP` error,
signaling that the operation is not supported on non-source pads.

Suggested-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/media/v4l2-core/v4l2-subdev.c

index 3a4ba08810d249a94ce8de31059c20a198c55a49..827b3b8918cb94ec9cd6b4acd3aed45662e63cee 100644 (file)
@@ -334,6 +334,11 @@ static int call_get_frame_desc(struct v4l2_subdev *sd, unsigned int pad,
        unsigned int i;
        int ret;
 
+#if defined(CONFIG_MEDIA_CONTROLLER)
+       if (!(sd->entity.pads[pad].flags & MEDIA_PAD_FL_SOURCE))
+               return -EOPNOTSUPP;
+#endif
+
        memset(fd, 0, sizeof(*fd));
 
        ret = sd->ops->pad->get_frame_desc(sd, pad, fd);