summaryrefslogtreecommitdiffstats
path: root/include/linux/skbuff.h
diff options
context:
space:
mode:
authorPatrick McHardy2013-04-17 08:46:58 +0200
committerDavid S. Miller2013-04-19 20:57:57 +0200
commit0ebd0ac5ff01ebf412e1bd3c33620ef7ffc5d866 (patch)
tree0f91f0bb25b2674c97ac97ff05e572f6d2394562 /include/linux/skbuff.h
parentnetlink: rename ssk to sk in struct netlink_skb_params (diff)
downloadkernel-qcow2-linux-0ebd0ac5ff01ebf412e1bd3c33620ef7ffc5d866.tar.gz
kernel-qcow2-linux-0ebd0ac5ff01ebf412e1bd3c33620ef7ffc5d866.tar.xz
kernel-qcow2-linux-0ebd0ac5ff01ebf412e1bd3c33620ef7ffc5d866.zip
net: add function to allocate sk_buff head without data area
Add a function to allocate a sk_buff head without any data. This will be used by memory mapped netlink to attach data from the mmaped area to the skb. Additionally change skb_release_all() to check whether the skb has a data area to allow the skb destructor to clear the data pointer in case only a head has been allocated. Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/linux/skbuff.h')
-rw-r--r--include/linux/skbuff.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index f5bed7b31954..2e0ced1af3b1 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -651,6 +651,12 @@ static inline struct sk_buff *alloc_skb_fclone(unsigned int size,
return __alloc_skb(size, priority, SKB_ALLOC_FCLONE, NUMA_NO_NODE);
}
+extern struct sk_buff *__alloc_skb_head(gfp_t priority, int node);
+static inline struct sk_buff *alloc_skb_head(gfp_t priority)
+{
+ return __alloc_skb_head(priority, -1);
+}
+
extern struct sk_buff *skb_morph(struct sk_buff *dst, struct sk_buff *src);
extern int skb_copy_ubufs(struct sk_buff *skb, gfp_t gfp_mask);
extern struct sk_buff *skb_clone(struct sk_buff *skb,