]>
Commit | Line | Data |
---|---|---|
96f81b03 GKH |
1 | From 8a7c5594c02022ca5fa7fb603e11b3e1feb76ed5 Mon Sep 17 00:00:00 2001 |
2 | From: Hans Verkuil <hans.verkuil@cisco.com> | |
3 | Date: Sat, 12 May 2018 10:44:02 -0400 | |
4 | Subject: media: v4l2-ioctl: clear fields in s_parm | |
5 | ||
6 | From: Hans Verkuil <hans.verkuil@cisco.com> | |
7 | ||
8 | commit 8a7c5594c02022ca5fa7fb603e11b3e1feb76ed5 upstream. | |
9 | ||
10 | Zero the reserved capture/output array. | |
11 | ||
12 | Zero the extendedmode (it is never used in drivers). | |
13 | ||
14 | Clear all flags in capture/outputmode except for V4L2_MODE_HIGHQUALITY, | |
15 | as that is the only valid flag. | |
16 | ||
17 | Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> | |
18 | Reviewed-by: Hans de Goede <hdegoede@redhat.com> | |
19 | Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org> | |
20 | Cc: Naresh Kamboju <naresh.kamboju@linaro.org> | |
21 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | |
22 | ||
23 | --- | |
24 | drivers/media/v4l2-core/v4l2-ioctl.c | 17 ++++++++++++++++- | |
25 | 1 file changed, 16 insertions(+), 1 deletion(-) | |
26 | ||
27 | --- a/drivers/media/v4l2-core/v4l2-ioctl.c | |
28 | +++ b/drivers/media/v4l2-core/v4l2-ioctl.c | |
29 | @@ -1959,7 +1959,22 @@ static int v4l_s_parm(const struct v4l2_ | |
30 | struct v4l2_streamparm *p = arg; | |
31 | int ret = check_fmt(file, p->type); | |
32 | ||
33 | - return ret ? ret : ops->vidioc_s_parm(file, fh, p); | |
34 | + if (ret) | |
35 | + return ret; | |
36 | + | |
37 | + /* Note: extendedmode is never used in drivers */ | |
38 | + if (V4L2_TYPE_IS_OUTPUT(p->type)) { | |
39 | + memset(p->parm.output.reserved, 0, | |
40 | + sizeof(p->parm.output.reserved)); | |
41 | + p->parm.output.extendedmode = 0; | |
42 | + p->parm.output.outputmode &= V4L2_MODE_HIGHQUALITY; | |
43 | + } else { | |
44 | + memset(p->parm.capture.reserved, 0, | |
45 | + sizeof(p->parm.capture.reserved)); | |
46 | + p->parm.capture.extendedmode = 0; | |
47 | + p->parm.capture.capturemode &= V4L2_MODE_HIGHQUALITY; | |
48 | + } | |
49 | + return ops->vidioc_s_parm(file, fh, p); | |
50 | } | |
51 | ||
52 | static int v4l_queryctrl(const struct v4l2_ioctl_ops *ops, |