mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
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>
This commit is contained in:
committed by
David S. Miller
parent
90abde49ea
commit
b34ab3527b
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user