aboutsummaryrefslogtreecommitdiffstats
path: root/net/core/skbuff.c
diff options
context:
space:
mode:
authorAlexander Duyck <alexander.h.duyck@intel.com>2014-09-10 18:05:26 -0400
committerDavid S. Miller <davem@davemloft.net>2014-09-12 17:51:24 -0400
commitcab41c47d92851de71c74b1a7bdbf0fadf6ae4ba (patch)
tree2e39ad3236decf2e77e93190eb108c99f15cee6e /net/core/skbuff.c
parentRevert "ipv4: Clarify in docs that accept_local requires rp_filter." (diff)
downloadlinux-dev-cab41c47d92851de71c74b1a7bdbf0fadf6ae4ba.tar.xz
linux-dev-cab41c47d92851de71c74b1a7bdbf0fadf6ae4ba.zip
skb: Add documentation for skb_clone_sk
This change adds some documentation to the call skb_clone_sk. This is meant to help clarify the purpose of the function for other developers. Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core/skbuff.c')
-rw-r--r--net/core/skbuff.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index a18dfb02d944..c9da77a95e2d 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -3511,6 +3511,19 @@ struct sk_buff *sock_dequeue_err_skb(struct sock *sk)
}
EXPORT_SYMBOL(sock_dequeue_err_skb);
+/**
+ * skb_clone_sk - create clone of skb, and take reference to socket
+ * @skb: the skb to clone
+ *
+ * This function creates a clone of a buffer that holds a reference on
+ * sk_refcnt. Buffers created via this function are meant to be
+ * returned using sock_queue_err_skb, or free via kfree_skb.
+ *
+ * When passing buffers allocated with this function to sock_queue_err_skb
+ * it is necessary to wrap the call with sock_hold/sock_put in order to
+ * prevent the socket from being released prior to being enqueued on
+ * the sk_error_queue.
+ */
struct sk_buff *skb_clone_sk(struct sk_buff *skb)
{
struct sock *sk = skb->sk;