diff
- struct sk_buff *n = __alloc_skb(newheadroom + skb->len + newtailroom,
-                                 gfp_mask, skb_alloc_rx_flag(skb),
-                                 NUMA_NO_NODE);
- // ... (remove all code up to skb_put)
- skb_put(n, skb->len);
+ struct sk_buff *n = skb_copy_expand_safe(skb, newheadroom, newtailroom, gfp_mask);
+ if (!n)
+     return NULL;
