Commit 7bb846af authored by Hans Verkuil's avatar Hans Verkuil Committed by Mauro Carvalho Chehab
Browse files

V4L/DVB (7946): videodev: small fixes for VIDIOC_G_FREQUENCY and VIDIOC_G_FMT



__video_do_ioctl incorrectly zeroed the tuner field of v4l2_frequency and
did not zero the full fmt union of v4l2_format.

Signed-off-by: default avatarHans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent 1d0ba5f3
Loading
Loading
Loading
Loading
+9 −11
Original line number Diff line number Diff line
@@ -883,16 +883,13 @@ static int __video_do_ioctl(struct inode *inode, struct file *file,
	case VIDIOC_G_FMT:
	{
		struct v4l2_format *f = (struct v4l2_format *)arg;
		enum v4l2_buf_type type=f->type;

		memset(&f->fmt.pix,0,sizeof(f->fmt.pix));
		f->type=type;
		memset(f->fmt.raw_data, 0, sizeof(f->fmt.raw_data));

		/* FIXME: Should be one dump per type */
		dbgarg (cmd, "type=%s\n", prt_names(type,
					v4l2_type_names));
		dbgarg(cmd, "type=%s\n", prt_names(f->type, v4l2_type_names));

		switch (type) {
		switch (f->type) {
		case V4L2_BUF_TYPE_VIDEO_CAPTURE:
			if (vfd->vidioc_g_fmt_cap)
				ret=vfd->vidioc_g_fmt_cap(file, fh, f);
@@ -1689,10 +1686,11 @@ static int __video_do_ioctl(struct inode *inode, struct file *file,
	case VIDIOC_G_FREQUENCY:
	{
		struct v4l2_frequency *p = arg;

		if (!vfd->vidioc_g_frequency)
			break;

		memset(p,0,sizeof(*p));
		memset(p->reserved, 0, sizeof(p->reserved));

		ret = vfd->vidioc_g_frequency(file, fh, p);
		if (!ret)