skbuff: use __build_skb_around() in __alloc_skb()
authorAlexander Lobakin <alobakin@pm.me>
Sat, 13 Feb 2021 14:11:50 +0000 (14:11 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sat, 13 Feb 2021 22:32:03 +0000 (14:32 -0800)
Just call __build_skb_around() instead of open-coding it.

Signed-off-by: Alexander Lobakin <alobakin@pm.me>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/skbuff.c

index 88566de26cd1c26cf3b43ab5467df6a2da0527fe..1c6f6ef70339a153d3b3b9d861ca74db83e8bdd8 100644 (file)
@@ -326,7 +326,6 @@ struct sk_buff *__alloc_skb(unsigned int size, gfp_t gfp_mask,
                            int flags, int node)
 {
        struct kmem_cache *cache;
-       struct skb_shared_info *shinfo;
        struct sk_buff *skb;
        u8 *data;
        bool pfmemalloc;
@@ -366,21 +365,8 @@ struct sk_buff *__alloc_skb(unsigned int size, gfp_t gfp_mask,
         * the tail pointer in struct sk_buff!
         */
        memset(skb, 0, offsetof(struct sk_buff, tail));
-       /* Account for allocated memory : skb + skb->head */
-       skb->truesize = SKB_TRUESIZE(size);
+       __build_skb_around(skb, data, 0);
        skb->pfmemalloc = pfmemalloc;
-       refcount_set(&skb->users, 1);
-       skb->head = data;
-       skb->data = data;
-       skb_reset_tail_pointer(skb);
-       skb->end = skb->tail + size;
-       skb->mac_header = (typeof(skb->mac_header))~0U;
-       skb->transport_header = (typeof(skb->transport_header))~0U;
-
-       /* make sure we initialize shinfo sequentially */
-       shinfo = skb_shinfo(skb);
-       memset(shinfo, 0, offsetof(struct skb_shared_info, dataref));
-       atomic_set(&shinfo->dataref, 1);
 
        if (flags & SKB_ALLOC_FCLONE) {
                struct sk_buff_fclones *fclones;
@@ -393,8 +379,6 @@ struct sk_buff *__alloc_skb(unsigned int size, gfp_t gfp_mask,
                fclones->skb2.fclone = SKB_FCLONE_CLONE;
        }
 
-       skb_set_kcov_handle(skb, kcov_common_handle());
-
        return skb;
 
 nodata: