net: macsec: use skb_ensure_writable_head_tail to expand the skb
authorRadu Pirea (NXP OSS) <radu-nicolae.pirea@oss.nxp.com>
Tue, 19 Dec 2023 14:53:26 +0000 (16:53 +0200)
committerDavid S. Miller <davem@davemloft.net>
Wed, 27 Dec 2023 13:08:09 +0000 (13:08 +0000)
Use skb_ensure_writable_head_tail to expand the skb if needed instead of
reimplementing a similar operation.

Signed-off-by: Radu Pirea (NXP OSS) <radu-nicolae.pirea@oss.nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/macsec.c

index 9663050a852d816d32ffc22d9853b4c3a7e079c9..972bd816292a007e2707fc8170da502992ecb51f 100644 (file)
@@ -604,26 +604,11 @@ static struct sk_buff *macsec_encrypt(struct sk_buff *skb,
                return ERR_PTR(-EINVAL);
        }
 
-       if (unlikely(skb_headroom(skb) < MACSEC_NEEDED_HEADROOM ||
-                    skb_tailroom(skb) < MACSEC_NEEDED_TAILROOM)) {
-               struct sk_buff *nskb = skb_copy_expand(skb,
-                                                      MACSEC_NEEDED_HEADROOM,
-                                                      MACSEC_NEEDED_TAILROOM,
-                                                      GFP_ATOMIC);
-               if (likely(nskb)) {
-                       consume_skb(skb);
-                       skb = nskb;
-               } else {
-                       macsec_txsa_put(tx_sa);
-                       kfree_skb(skb);
-                       return ERR_PTR(-ENOMEM);
-               }
-       } else {
-               skb = skb_unshare(skb, GFP_ATOMIC);
-               if (!skb) {
-                       macsec_txsa_put(tx_sa);
-                       return ERR_PTR(-ENOMEM);
-               }
+       ret = skb_ensure_writable_head_tail(skb, dev);
+       if (unlikely(ret < 0)) {
+               macsec_txsa_put(tx_sa);
+               kfree_skb(skb);
+               return ERR_PTR(ret);
        }
 
        unprotected_len = skb->len;