[media] v4l: Check pad number in get try pointer functions
authorSakari Ailus <sakari.ailus@iki.fi>
Thu, 16 Feb 2012 01:57:22 +0000 (22:57 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 10 Apr 2012 18:01:49 +0000 (15:01 -0300)
Unify functions to get try pointers and validate the pad number accessed by
the user.

Signed-off-by: Sakari Ailus <sakari.ailus@iki.fi>
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
include/media/v4l2-subdev.h

index bcaf6b80bb206efc9e84ff06c018fb53ed29b778..7e850355a6f0c1ad4f6e350b57154051816b34b2 100644 (file)
@@ -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;
-}
-
-static inline struct v4l2_rect *
-v4l2_subdev_get_try_compose(struct v4l2_subdev_fh *fh, unsigned int pad)
-{
-       return &fh->pad[pad].try_compose;
-}
+#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;                        \
+       }
+
+__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;