Commit df18bfd3 authored by Arnd Bergmann's avatar Arnd Bergmann Committed by Mauro Carvalho Chehab

media: v4l: fix uapi mpeg slice params definition

We get a headers_check warning about the newly defined ioctl command
structures:

./usr/include/linux/v4l2-controls.h:1105: found __[us]{8,16,32,64} type without #include <linux/types.h>

This is resolved by including linux/types.h, as suggested by the
warning, but there is another problem: Three of the four structures
have an odd number of __u8 headers, but are aligned to 32 bit in the
v4l2_ctrl_mpeg2_slice_params, so we get an implicit padding byte
for each one. To solve that, let's add explicit padding that can
be set to zero and verified in the kernel.

Fixes: c27bb30e ("media: v4l: Add definitions for MPEG-2 slice format and metadata")
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+samsung@kernel.org>
parent dafb7f9a
...@@ -1664,6 +1664,11 @@ static int std_validate(const struct v4l2_ctrl *ctrl, u32 idx, ...@@ -1664,6 +1664,11 @@ static int std_validate(const struct v4l2_ctrl *ctrl, u32 idx,
p_mpeg2_slice_params->forward_ref_index >= VIDEO_MAX_FRAME) p_mpeg2_slice_params->forward_ref_index >= VIDEO_MAX_FRAME)
return -EINVAL; return -EINVAL;
if (p_mpeg2_slice_params->pad ||
p_mpeg2_slice_params->picture.pad ||
p_mpeg2_slice_params->sequence.pad)
return -EINVAL;
return 0; return 0;
case V4L2_CTRL_TYPE_MPEG2_QUANTIZATION: case V4L2_CTRL_TYPE_MPEG2_QUANTIZATION:
......
...@@ -47,11 +47,11 @@ ...@@ -47,11 +47,11 @@
* videodev2.h. * videodev2.h.
*/ */
#include <linux/types.h>
#ifndef __LINUX_V4L2_CONTROLS_H #ifndef __LINUX_V4L2_CONTROLS_H
#define __LINUX_V4L2_CONTROLS_H #define __LINUX_V4L2_CONTROLS_H
#include <linux/types.h>
/* Control classes */ /* Control classes */
#define V4L2_CTRL_CLASS_USER 0x00980000 /* Old-style 'user' controls */ #define V4L2_CTRL_CLASS_USER 0x00980000 /* Old-style 'user' controls */
#define V4L2_CTRL_CLASS_MPEG 0x00990000 /* MPEG-compression controls */ #define V4L2_CTRL_CLASS_MPEG 0x00990000 /* MPEG-compression controls */
...@@ -1112,6 +1112,7 @@ struct v4l2_mpeg2_sequence { ...@@ -1112,6 +1112,7 @@ struct v4l2_mpeg2_sequence {
__u8 profile_and_level_indication; __u8 profile_and_level_indication;
__u8 progressive_sequence; __u8 progressive_sequence;
__u8 chroma_format; __u8 chroma_format;
__u8 pad;
}; };
struct v4l2_mpeg2_picture { struct v4l2_mpeg2_picture {
...@@ -1130,6 +1131,7 @@ struct v4l2_mpeg2_picture { ...@@ -1130,6 +1131,7 @@ struct v4l2_mpeg2_picture {
__u8 alternate_scan; __u8 alternate_scan;
__u8 repeat_first_field; __u8 repeat_first_field;
__u8 progressive_frame; __u8 progressive_frame;
__u8 pad;
}; };
struct v4l2_ctrl_mpeg2_slice_params { struct v4l2_ctrl_mpeg2_slice_params {
...@@ -1144,6 +1146,7 @@ struct v4l2_ctrl_mpeg2_slice_params { ...@@ -1144,6 +1146,7 @@ struct v4l2_ctrl_mpeg2_slice_params {
__u8 backward_ref_index; __u8 backward_ref_index;
__u8 forward_ref_index; __u8 forward_ref_index;
__u8 pad;
}; };
struct v4l2_ctrl_mpeg2_quantization { struct v4l2_ctrl_mpeg2_quantization {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment