diff -urN linux.orig/net/core/skbuff.c linux/net/core/skbuff.c --- linux.orig/net/core/skbuff.c Fri Nov 1 17:20:26 2002 +++ linux/net/core/skbuff.c Fri Nov 1 17:27:48 2002 @@ -333,13 +333,16 @@ { struct sk_buff *n; unsigned long offset; - int headroom = skb_headroom(skb); + int delta = newheadroom - skb_headroom(skb); + + if (delta <= 0) + delta = 0; /* * Allocate the copy buffer */ - n=alloc_skb(skb->truesize+newheadroom-headroom, GFP_ATOMIC); + n=alloc_skb(skb->truesize + delta, GFP_ATOMIC); if(n==NULL) return NULL;