Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d922b8ea authored by Istvan Varga's avatar Istvan Varga Committed by Mauro Carvalho Chehab
Browse files

V4L/DVB: cx88: fix setting input when using DVB



In cx88-mpeg.c, there is code that sets core->input to CX88_VMUX_DVB.
However, this may be incorrect, since core->input is actually an
index to core->board.input[], which has not enough elements to be
indexed by the value of CX88_VMUX_DVB. So, the modified code searches
core->board.input[] for an input with a type of CX88_VMUX_DVB, and if
it does not find one, the index is simply set to zero.
The change may not have much effect, though, since it appears the only
case when core->input is actually used is when the current input is
being queried.

Signed-off-by: default avatarIstvan Varga <istvanv@users.sourceforge.net>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent db190fc1
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -599,13 +599,22 @@ struct cx8802_driver * cx8802_get_driver(struct cx8802_dev *dev, enum cx88_board
static int cx8802_request_acquire(struct cx8802_driver *drv)
{
	struct cx88_core *core = drv->core;
	unsigned int	i;

	/* Fail a request for hardware if the device is busy. */
	if (core->active_type_id != CX88_BOARD_NONE &&
	    core->active_type_id != drv->type_id)
		return -EBUSY;

	core->input = CX88_VMUX_DVB;
	core->input = 0;
	for (i = 0;
	     i < (sizeof(core->board.input) / sizeof(struct cx88_input));
	     i++) {
		if (core->board.input[i].type == CX88_VMUX_DVB) {
			core->input = i;
			break;
		}
	}

	if (drv->advise_acquire)
	{