Andrew Morton wrote: >>http://bugzilla.kernel.org/show_bug.cgi?id=8736 >> >>Here is another scenario I bumped onto - qdisc_watchdog_cancel() and >>qdisc_restart() deadlock. >> >>CPU#0 >>qdisc_watchdog() fires and gets dev->queue_lock >>qdisc_run()...qdisc_restart()... >>-> releases dev->queue_lock and enters dev_hard_start_xmit() >> >>CPU#1 >>tc del qdisc dev ... >>qdisc_graft()...dev_graft_qdisc()...dev_deactivate()... >>-> grabs dev->queue_lock ... >>qdisc_reset()...{cbq,hfsc,htb,netem,tbf}_reset()...qdisc_watchdog_cancel()... >>-> hrtimer_cancel() - waiting for the qdisc_watchdog() to exit, while still >>holding dev->queue_lock >> >>CPU#0 >>dev_hard_start_xmit() returns ... >>-> wants to get dev->queue_lock(!) >> >>DEADLOCK!
Good catch. Please try reverting commit 1936502d00ae6c2aa3931c42f6cf54afaba094f2, that should fix it. - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html