net: introduce netdev_alloc_frag()
authorEric Dumazet <edumazet@google.com>
Fri, 18 May 2012 05:12:12 +0000 (05:12 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 18 May 2012 17:31:25 +0000 (13:31 -0400)
commit6f532612cc2410a5079ea0f83e7a5011adfbf70d
tree0459fada6287120f5c47ed56c440c4d1c3e3eaa2
parent56138f50d1900b0c3d8647376e37b488b23ba53d
net: introduce netdev_alloc_frag()

Fix two issues introduced in commit a1c7fff7e18f5
( net: netdev_alloc_skb() use build_skb() )

- Must be IRQ safe (non NAPI drivers can use it)
- Must not leak the frag if build_skb() fails to allocate sk_buff

This patch introduces netdev_alloc_frag() for drivers willing to
use build_skb() instead of __netdev_alloc_skb() variants.

Factorize code so that :
__dev_alloc_skb() is a wrapper around __netdev_alloc_skb(), and
dev_alloc_skb() a wrapper around netdev_alloc_skb()

Use __GFP_COLD flag.

Almost all network drivers now benefit from skb->head_frag
infrastructure.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/skbuff.h
net/core/skbuff.c