<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:times new roman, new york, times, serif;font-size:12pt"><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;">I think usbvision_probe is called because of the dummy device code.&nbsp; We should probably rethink the dummy device.<br><br><br><br><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;">----- Original Message ----<br>From: Thierry MERLE &lt;thierry.merle@free.fr&gt;<br>To: Mauro Carvalho Chehab &lt;mchehab@infradead.org&gt;<br>Cc: Dwaine Garden &lt;dwainegarden@rogers.com&gt;; Linux and Kernel Video &lt;video4linux-list@redhat.com&gt;; Linux DVB &lt;linux-dvb@linuxtv.org&gt;<br>Sent: Saturday, April 14, 2007 3:08:01 PM<br>Subject: Re: [Patch] USBVision - Fix NT1005 Bridge detection<br><br><div><br>Hi Mauro,<br><br>Mauro Carvalho Chehab a écrit :<br>&gt; Hi Thierry,<br>&gt;<br>&gt;&nbsp;&nbsp; <br>&gt;&gt; I
 am currently debugging the Trent's patch that makes a kernel oops and <br>&gt;&gt; I don't know why.<br>&gt;&gt; The usbvision_probe is called event if the device is not plugged, and <br>&gt;&gt; the kernel oops occurs on this piece of code:<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; model = devid-&gt;driver_info;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; printk(KERN_INFO "%s: %s found\n", __FUNCTION__,<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; usbvision_device_data[model].ModelString);<br>&gt;&gt;<br>&gt;&gt; Memory alignment problem ? Why this probe is called even if there is no <br>&gt;&gt; device plugged-in ?<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; <br>&gt; Very weird. It shouldn't be called when no device is plugged...<br>&gt;<br>&gt;&nbsp;&nbsp; <br>&gt;&gt; By putting something like:<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; model = devid-&gt;driver_info;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; if(model&lt;0 || model
 &gt;HPG_WINTV) {<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printk(KERN_INFO "model out of bounds %d\n",model);<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -ENODEV;<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; } else printk(KERN_INFO "model is %d\n",model);<br>&gt;&gt;<br>&gt;&gt; The problem disappeared...<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; <br>&gt;<br>&gt; A similar code is also present on em28xx. Anyway, it is better to have<br>&gt; this kind of protection. I've added a patch, based on yours, fixing the<br>&gt; bug. As you'd agreed, I've pushed the patches to master tree.<br>&gt;<br>&gt; It is better, however, to check why it is calling the code, without a<br>&gt; valid USB ID, since it may mean a future trouble...<br>&gt;<br>&gt; Btw, I think we can also apply this one also:<br>&gt;<br>&gt; diff -r 6b6805e3c76d linux/drivers/media/video/usbvision/usbvision-video.c<br>&gt; ---
 a/linux/drivers/media/video/usbvision/usbvision-video.c&nbsp;&nbsp;&nbsp;&nbsp;Sat Apr 14 15:17:08 2007 -0300<br>&gt; +++ b/linux/drivers/media/video/usbvision/usbvision-video.c&nbsp;&nbsp;&nbsp;&nbsp;Sat Apr 14 15:19:06 2007 -0300<br>&gt; @@ -1985,8 +1985,6 @@ static int __devinit usbvision_probe(str<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return -ENODEV;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&gt;&nbsp;&nbsp;<br>&gt; -&nbsp;&nbsp;&nbsp;&nbsp;usb_get_dev(dev);<br>&gt; -<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ((usbvision = usbvision_alloc(dev)) == NULL) {<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;err("%s: couldn't allocate USBVision struct", __FUNCTION__);<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return -ENOMEM;<br>&gt;<br>&gt;<br>&gt; usb_get_dev() is already called previously on usbvision_probe.<br>&gt;<br>&gt;&nbsp;&nbsp; <br>Latest v4l-dvb tree tested OK.<br><br>You are right
 for usb_get_dev, only one call is necessary to increment <br>the reference count.<br><br>Thierry<br></div></div><br></div></div></body></html>