Jason Wessel wrote: > > The netpoll_cleanup handler can hang the kernel if there is no work in the > work queue because a call to cancel_rearming_delayed_work() with no work > goes into an infinite loop.
This should not be true any longer, cancel_rearming_delayed_work() should work correctly in any case. Could you please clarify? > @@ -771,30 +771,32 @@ void netpoll_cleanup(struct netpoll *np) > > [...snip...] > > + if (atomic_dec_and_test(&npinfo->refcnt)) { > + skb_queue_purge(&npinfo->arp_tx); > + skb_queue_purge(&npinfo->txq); > + if (delayed_work_pending(&npinfo->tx_work)) { > cancel_rearming_delayed_work(&npinfo->tx_work); > flush_scheduled_work(); But this "if (delayed_work_pending())" is racy anyway? Oleg. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/