Don't exceed more than the 8 bytes of reserved ("needed_headroom") space when calling pskb_expand_head. This fixes a bug introduced in linux-3.12.0. Signed-off-by: Mark Lord --- ax88179_178a.c.orig 2013-11-03 18:41:51.000000000 -0500 +++ linux/drivers/net/usb/ax88179_178a.c 2013-11-17 13:47:26.127971404 -0500 @@ -1183,10 +1183,10 @@ if (((skb->len + 8) % frame_size) == 0) tx_hdr2 |= 0x80008000; /* Enable padding */ - headroom = skb_headroom(skb) - 8; + headroom = skb_headroom(skb); - if ((skb_header_cloned(skb) || headroom < 0) && - pskb_expand_head(skb, headroom < 0 ? 8 : 0, 0, GFP_ATOMIC)) { + if ((skb_header_cloned(skb) || headroom < 8) && + pskb_expand_head(skb, headroom < 8 ? 8 - headroom : 0, 0, GFP_ATOMIC)) { dev_kfree_skb_any(skb); return NULL; }