V4L/DVB (10218): cx23885: Fix Oops for mixed install of analog and digital only cards
Analog support for HVR-1250 has not been completed, but does exist for the HVR-1800. Since both cards use the same driver, it tries to create the analog dev for both devices, which is not possible. This causes a NULL error to show up in video_open and mpeg_open. -Mark Iterations through the cx23885_devlist must check for NULL pointers as some supported devices only have DVB support at the moment. Mark Jenks encoutered an Oops in a system with both an HVR-1250 and HVR-1800 installed. -Andy Reported-by: Mark Jenks <mjenks1968@gmail.com> Tested-by: Mark Jenks <mjenks1968@gmail.com> Signed-off-by: Mark Jenks <mjenks1968@gmail.com> Signed-off-by: Andy Walls <awalls@radix.net> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
Родитель
0f3559ef17
Коммит
cd8f894eac
|
@ -1586,7 +1586,8 @@ static int mpeg_open(struct file *file)
|
|||
lock_kernel();
|
||||
list_for_each(list, &cx23885_devlist) {
|
||||
h = list_entry(list, struct cx23885_dev, devlist);
|
||||
if (h->v4l_device->minor == minor) {
|
||||
if (h->v4l_device &&
|
||||
h->v4l_device->minor == minor) {
|
||||
dev = h;
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -730,12 +730,13 @@ static int video_open(struct file *file)
|
|||
lock_kernel();
|
||||
list_for_each(list, &cx23885_devlist) {
|
||||
h = list_entry(list, struct cx23885_dev, devlist);
|
||||
if (h->video_dev->minor == minor) {
|
||||
if (h->video_dev &&
|
||||
h->video_dev->minor == minor) {
|
||||
dev = h;
|
||||
type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||
}
|
||||
if (h->vbi_dev &&
|
||||
h->vbi_dev->minor == minor) {
|
||||
h->vbi_dev->minor == minor) {
|
||||
dev = h;
|
||||
type = V4L2_BUF_TYPE_VBI_CAPTURE;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче