Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5e6ff7c1 authored by Sakari Ailus's avatar Sakari Ailus Committed by Mauro Carvalho Chehab
Browse files

[media] v4l: Check pad number in get try pointer functions



Unify functions to get try pointers and validate the pad number accessed by
the user.

Signed-off-by: default avatarSakari Ailus <sakari.ailus@iki.fi>
Acked-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent c5a766ce
Loading
Loading
Loading
Loading
+13 −17
Original line number Diff line number Diff line
@@ -565,23 +565,19 @@ struct v4l2_subdev_fh {
	container_of(fh, struct v4l2_subdev_fh, vfh)

#if defined(CONFIG_VIDEO_V4L2_SUBDEV_API)
static inline struct v4l2_mbus_framefmt *
v4l2_subdev_get_try_format(struct v4l2_subdev_fh *fh, unsigned int pad)
{
	return &fh->pad[pad].try_fmt;
}

static inline struct v4l2_rect *
v4l2_subdev_get_try_crop(struct v4l2_subdev_fh *fh, unsigned int pad)
{
	return &fh->pad[pad].try_crop;
#define __V4L2_SUBDEV_MK_GET_TRY(rtype, fun_name, field_name)		\
	static inline struct rtype *					\
	v4l2_subdev_get_try_##fun_name(struct v4l2_subdev_fh *fh,	\
				       unsigned int pad)		\
	{								\
		BUG_ON(unlikely(pad >= vdev_to_v4l2_subdev(		\
					fh->vfh.vdev)->entity.num_pads)); \
		return &fh->pad[pad].field_name;			\
	}

static inline struct v4l2_rect *
v4l2_subdev_get_try_compose(struct v4l2_subdev_fh *fh, unsigned int pad)
{
	return &fh->pad[pad].try_compose;
}
__V4L2_SUBDEV_MK_GET_TRY(v4l2_mbus_framefmt, format, try_fmt)
__V4L2_SUBDEV_MK_GET_TRY(v4l2_rect, crop, try_compose)
__V4L2_SUBDEV_MK_GET_TRY(v4l2_rect, compose, try_compose)
#endif

extern const struct v4l2_file_operations v4l2_subdev_fops;