Use existing skb_put_data() and skb_trim() instead of open-coding them,
with the skb_put_data() first so that logically, `skb` still contains the
data to be copied in its data..tail area when skb_put_data() reads it.
This change on its own is a cleanup, and it is also necessary for potential
future integration of skbuffs with things like KASAN.

Signed-off-by: Jann Horn <ja...@google.com>
---
 net/caif/cfpkt_skbuff.c | 16 +++++-----------
 1 file changed, 5 insertions(+), 11 deletions(-)

diff --git a/net/caif/cfpkt_skbuff.c b/net/caif/cfpkt_skbuff.c
index 38c2b7a890dd..37ac5ca0ffdf 100644
--- a/net/caif/cfpkt_skbuff.c
+++ b/net/caif/cfpkt_skbuff.c
@@ -319,16 +319,12 @@ struct cfpkt *cfpkt_append(struct cfpkt *dstpkt,
                if (tmppkt == NULL)
                        return NULL;
                tmp = pkt_to_skb(tmppkt);
-               skb_set_tail_pointer(tmp, dstlen);
-               tmp->len = dstlen;
-               memcpy(tmp->data, dst->data, dstlen);
+               skb_put_data(tmp, dst->data, dstlen);
                cfpkt_destroy(dstpkt);
                dst = tmp;
        }
-       memcpy(skb_tail_pointer(dst), add->data, skb_headlen(add));
+       skb_put_data(dst, add->data, skb_headlen(add));
        cfpkt_destroy(addpkt);
-       dst->tail += addlen;
-       dst->len += addlen;
        return skb_to_pkt(dst);
 }
 
@@ -359,13 +355,11 @@ struct cfpkt *cfpkt_split(struct cfpkt *pkt, u16 pos)
        if (skb2 == NULL)
                return NULL;
 
+       skb_put_data(skb2, split, len2nd);
+
        /* Reduce the length of the original packet */
-       skb_set_tail_pointer(skb, pos);
-       skb->len = pos;
+       skb_trim(skb, pos);
 
-       memcpy(skb2->data, split, len2nd);
-       skb2->tail += len2nd;
-       skb2->len += len2nd;
        skb2->priority = skb->priority;
        return skb_to_pkt(skb2);
 }
-- 
2.21.0.rc0.258.g878e2cd30e-goog

Reply via email to