Re: SLUB Corruption from witin drivers/usb/core/devio.c

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 05/16/2012 10:30 PM, Alan Stern wrote:
This gives me an idea for what the problem might be.  Basically,
ehci-hcd does not do a good job of unlinking interrupt transfers.

In drivers/usb/host/ehci-sched.c:intr_deschedule(), you'll find this
code:

	if (list_empty (&qh->qtd_list)
			|| (cpu_to_hc32(ehci, QH_CMASK)
					&  hw->hw_info2) != 0)
		wait = 2;
	else
		wait = 55;	/* worst case: 3 * 1024 */

	udelay (wait);

I suspect the values for "wait" are much too small.  The EHCI
specification doesn't really say what they should be.  Try
replacing the entire code snippet above with

	udelay(1000);

and see if that makes any difference.

This looks very promising indeed. I've inserted the second patch
of Huan Li (not the one which killed the kernel) and your
modification and have a stable run for more then 8 hours.

I assume the modified udelay is not supposed to be a permanent
fix for a production kernel. So how do we proceed ?

Thank you

O.

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux