Skip to content

Commit cda7ea6

Browse files
zx2c4davem330
authored andcommitted
macsec: check return value of skb_to_sgvec always
Signed-off-by: Jason A. Donenfeld <[email protected]> Cc: Sabrina Dubroca <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 89a5ea9 commit cda7ea6

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

drivers/net/macsec.c

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -740,7 +740,12 @@ static struct sk_buff *macsec_encrypt(struct sk_buff *skb,
740740
macsec_fill_iv(iv, secy->sci, pn);
741741

742742
sg_init_table(sg, ret);
743-
skb_to_sgvec(skb, sg, 0, skb->len);
743+
ret = skb_to_sgvec(skb, sg, 0, skb->len);
744+
if (unlikely(ret < 0)) {
745+
macsec_txsa_put(tx_sa);
746+
kfree_skb(skb);
747+
return ERR_PTR(ret);
748+
}
744749

745750
if (tx_sc->encrypt) {
746751
int len = skb->len - macsec_hdr_len(sci_present) -
@@ -947,7 +952,11 @@ static struct sk_buff *macsec_decrypt(struct sk_buff *skb,
947952
macsec_fill_iv(iv, sci, ntohl(hdr->packet_number));
948953

949954
sg_init_table(sg, ret);
950-
skb_to_sgvec(skb, sg, 0, skb->len);
955+
ret = skb_to_sgvec(skb, sg, 0, skb->len);
956+
if (unlikely(ret < 0)) {
957+
kfree_skb(skb);
958+
return ERR_PTR(ret);
959+
}
951960

952961
if (hdr->tci_an & MACSEC_TCI_E) {
953962
/* confidentiality: ethernet + macsec header

0 commit comments

Comments
 (0)