mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-24 14:54:49 +08:00
[media] VIDIOC_ENUM_FREQ_BANDS fix
When VIDIOC_ENUM_FREQ_BANDS is called for a driver that doesn't supply an enum_freq_bands op, then it will fall back to reporting a single freq band based on information from g_tuner or g_modulator. Due to a bug this is an infinite list since the index field wasn't tested. This patch fixes this and returns -EINVAL if index != 0. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
00424c7ec5
commit
aa4d9b53f0
@ -1853,6 +1853,8 @@ static int v4l_enum_freq_bands(const struct v4l2_ioctl_ops *ops,
|
||||
.type = type,
|
||||
};
|
||||
|
||||
if (p->index)
|
||||
return -EINVAL;
|
||||
err = ops->vidioc_g_tuner(file, fh, &t);
|
||||
if (err)
|
||||
return err;
|
||||
@ -1870,6 +1872,8 @@ static int v4l_enum_freq_bands(const struct v4l2_ioctl_ops *ops,
|
||||
|
||||
if (type != V4L2_TUNER_RADIO)
|
||||
return -EINVAL;
|
||||
if (p->index)
|
||||
return -EINVAL;
|
||||
err = ops->vidioc_g_modulator(file, fh, &m);
|
||||
if (err)
|
||||
return err;
|
||||
|
Loading…
Reference in New Issue
Block a user