On Mon, Mar 3, 2014 at 12:40 PM, Eric W. Biederman <ebiederm@xxxxxxxxxxxx> wrote: > net/core/netpoll.c | 6 +++--- > 1 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/net/core/netpoll.c b/net/core/netpoll.c > index a664f7829a6d..a1877621bf31 100644 > --- a/net/core/netpoll.c > +++ b/net/core/netpoll.c > @@ -330,7 +330,7 @@ repeat: > skb = skb_dequeue(&skb_pool); > > if (!skb) { > - if (++count < 10) { > + if (++count < 10 && !in_irq()) { > netpoll_poll_dev(np->dev); This looks like a workaround. Here ou are trying to avoid calling netpoll_poll_dev() in IRQ context, but it has a side effect for netpoll_send_udp() which could possibly return early after find_skb(). Also, netpoll_poll_dev() does more than just calling driver poll method, I am not sure if it is safe to skip it either. netpoll code needs to rewrite. Thanks. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html