Hi Thierry,
> I am currently debugging the Trent's patch that makes a kernel oops and
> I don't know why.
> The usbvision_probe is called event if the device is not plugged, and
> the kernel oops occurs on this piece of code:
> model = devid->driver_info;
> printk(KERN_INFO "%s: %s found\n", __FUNCTION__,
> usbvision_device_data[model].ModelString);
>
> Memory alignment problem ? Why this probe is called even if there is no
> device plugged-in ?
Very weird. It shouldn't be called when no device is plugged...
> By putting something like:
> model = devid->driver_info;
> if(model<0 || model >HPG_WINTV) {
> printk(KERN_INFO "model out of bounds %d\n",model);
> return -ENODEV;
> } else printk(KERN_INFO "model is %d\n",model);
>
> The problem disappeared...
A similar code is also present on em28xx. Anyway, it is better to have
this kind of protection. I've added a patch, based on yours, fixing the
bug. As you'd agreed, I've pushed the patches to master tree.
It is better, however, to check why it is calling the code, without a
valid USB ID, since it may mean a future trouble...
Btw, I think we can also apply this one also:
diff -r 6b6805e3c76d linux/drivers/media/video/usbvision/usbvision-video.c
--- a/linux/drivers/media/video/usbvision/usbvision-video.c Sat Apr 14
15:17:08 2007 -0300
+++ b/linux/drivers/media/video/usbvision/usbvision-video.c Sat Apr 14
15:19:06 2007 -0300
@@ -1985,8 +1985,6 @@ static int __devinit usbvision_probe(str
return -ENODEV;
}
- usb_get_dev(dev);
-
if ((usbvision = usbvision_alloc(dev)) == NULL) {
err("%s: couldn't allocate USBVision struct", __FUNCTION__);
return -ENOMEM;
usb_get_dev() is already called previously on usbvision_probe.
--
Cheers,
Mauro
_______________________________________________
linux-dvb mailing list
[EMAIL PROTECTED]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb