diff options
author | Radu Pirea (NXP OSS) <radu-nicolae.pirea@oss.nxp.com> | 2023-12-19 16:53:26 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2023-12-27 13:08:09 +0000 |
commit | b34ab3527b9622ca4910df24ff5beed5aa66c6b5 (patch) | |
tree | b2cb7de7e075298661c14d14d5025cc235863356 /drivers/net/macsec.c | |
parent | 90abde49ea85a8af9a56bbab8c419aefc77f919a (diff) |
net: macsec: use skb_ensure_writable_head_tail to expand the skb
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>
Diffstat (limited to 'drivers/net/macsec.c')
-rw-r--r-- | drivers/net/macsec.c | 25 |
1 files changed, 5 insertions, 20 deletions
diff --git a/drivers/net/macsec.c b/drivers/net/macsec.c index 9663050a852d..972bd816292a 100644 --- a/drivers/net/macsec.c +++ b/drivers/net/macsec.c @@ -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; |