lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Mon, 20 Oct 2008 12:17:45 -0400 (EDT)
From:	Alan Stern <stern@...land.harvard.edu>
To:	Justin Piszcz <jpiszcz@...idpixels.com>
cc:	Oliver Neukum <oliver@...kum.org>, Mike Isely <isely@...ox.com>,
	Kernel development list <linux-kernel@...r.kernel.org>,
	USB list <linux-usb@...r.kernel.org>
Subject: Bug fix for pvrusb2 driver [was: Re: Kernel 2.6.26.5 -> 2.6.27.2
 [USB REGRESSION] (USB -> D_STATE)]

On Mon, 20 Oct 2008, Justin Piszcz wrote:

> >> http://home.comcast.net/~jpiszcz/20081019/trace_before_trigger.txt
> >> http://home.comcast.net/~jpiszcz/20081019/trace_after_trigger.txt
> >
> > Your trace is incomplete.  You might need to increase the size of the
> > kernel log buffer (CONFIG_LOG_BUF_SHIFT) or the size of the buffer used
> > by dmesg (the -s option).
> >
> > Alan Stern
> >
> 
> You're right, I set it to 128 KiB and here is the full log, including the 
> initial dmesg:
> 
> http://home.comcast.net/~jpiszcz/20081019/kern.log

Okay, I see the problem. It's the same as we saw with the speedtouch
driver last week: The pvrusb2 driver resets its device but doesn't
define a pre_reset or a post_reset method.  As a result it gets
disconnected during the reset, and the recursive call causes it to
hang.

This patch should fix the problem.  It's not entirely correct, but it 
should at least allow the driver to work like it did in 2.6.26.

Alan Stern



Index: usb-2.6/drivers/media/video/pvrusb2/pvrusb2-main.c
===================================================================
--- usb-2.6.orig/drivers/media/video/pvrusb2/pvrusb2-main.c
+++ usb-2.6/drivers/media/video/pvrusb2/pvrusb2-main.c
@@ -68,6 +68,16 @@ static void pvr_setup_attach(struct pvr2
 #endif /* CONFIG_VIDEO_PVRUSB2_SYSFS */
 }
 
+static int pvr_pre_reset(struct usb_interface *intf)
+{
+	return 0;
+}
+
+static int pvr_post_reset(struct usb_interface *intf)
+{
+	return 0;
+}
+
 static int pvr_probe(struct usb_interface *intf,
 		     const struct usb_device_id *devid)
 {
@@ -109,7 +119,9 @@ static struct usb_driver pvr_driver = {
 	.name =         "pvrusb2",
 	.id_table =     pvr2_device_table,
 	.probe =        pvr_probe,
-	.disconnect =   pvr_disconnect
+	.disconnect =   pvr_disconnect,
+	.pre_reset =	pvr_pre_reset,
+	.post_reset =	pvr_post_reset,
 };
 
 /*

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ