On Mon, 3 Mar 2008, Christian Kujau wrote:Dave, it seems to me that this must be an example of a race between the iaa watchdog timer expiring and end_unlink_async() running. It's not good enough for end_unlink_async() to call iaa_watchdog_done(), because on an SMP system the timer may already have fired and the watchdog routine may be spinning on ehci->lock. It's even worse, because end_unlink_async() can call start_unlink_async(). If that happens, the watchdog routine will think the timer has expired when in fact it has just been restarted. How about replacing the WARN_ON(!ehci->reclaim); line in ehci_iaa_watchdog() with if (unlikely(!ehci->reclaim || !HC_IS_RUNNING(ehci_to_hcd(ehci)->state) || timer_pending(&ehci->iaa_watchdog)) goto done; where "done:" is added just before the spin_unlock_irqrestore? Alan Stern --
| Greg KH | [GIT PATCH] driver core patches against 2.6.24 |
| Justin C. Sherrill | Re: pkgsrc bulk build and tiff |
| Jeremy Allison | Re: [RFC] Heads up on sys_fallocate() |
| Roland Dreier | Re: Integration of SCST in the mainstream Linux kernel |
| Matt Thomas | Re: Add a MAP_ALIGNED flag for mmap(2). |
| Vsevolod Stakhov | Unicode support in iso9660. |
| Jaromir Dolecek | Re: Speeding up fork/wait path |
| matthew green | re: merge of freebsd eventhandler |
git: | |
| Petr Janda | KDE and OpenSSL = Broken |
| sam | Re: Loader not found |
| Erick Perez | Re: dragonfly pdf documentation |
| Michel Talon | Re: Compatability with FreeBSD Ports [debian package tools] |
