Simon, can you test this patch? I think it's the most straightforward 2.6.24 fix.
diff -r c60016ba6237 net/core/netpoll.c --- a/net/core/netpoll.c Tue Nov 13 09:09:36 2007 -0800 +++ b/net/core/netpoll.c Fri Nov 23 13:10:28 2007 -0600 @@ -203,6 +203,12 @@ static void refill_skbs(void) spin_unlock_irqrestore(&skb_pool.lock, flags); } +/* used to mark an skb as owned by netpoll */ +static void netpoll_skb_destroy(struct sk_buff *skb) +{ + return; +} + static void zap_completion_queue(void) { unsigned long flags; @@ -219,10 +225,12 @@ static void zap_completion_queue(void) while (clist != NULL) { struct sk_buff *skb = clist; clist = clist->next; - if (skb->destructor) + if (skb->destructor == netpoll_skb_destroy) { + skb->destructor = NULL; + __kfree_skb(skb); + } + else dev_kfree_skb_any(skb); /* put this one back */ - else - __kfree_skb(skb); } } @@ -252,6 +260,7 @@ repeat: atomic_set(&skb->users, 1); skb_reserve(skb, reserve); + skb->destructor = netpoll_skb_destroy; return skb; } -- Mathematics is the supreme nostalgia of our time. - 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