mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 23:32:14 +00:00
net/tls: fully initialize the msg wrapper skb
If strparser gets cornered into starting a new message from an sk_buff which already has frags, it will allocate a new skb to become the "wrapper" around the fragments of the message. This new skb does not inherit any metadata fields. In case of TLS offload this may lead to unnecessarily re-encrypting the message, as skb->decrypted is not set for the wrapper skb. Try to be conservative and copy all fields of old skb strparser's user may reasonably need. Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Reviewed-by: Dirk van der Merwe <dirk.vandermerwe@netronome.com> Reviewed-by: Simon Horman <simon.horman@netronome.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
7e7d199e05
commit
da29e4b466
3 changed files with 28 additions and 6 deletions
|
@ -160,18 +160,14 @@ static int __strp_recv(read_descriptor_t *desc, struct sk_buff *orig_skb,
|
|||
return 0;
|
||||
}
|
||||
|
||||
skb = alloc_skb(0, GFP_ATOMIC);
|
||||
skb = alloc_skb_for_msg(head);
|
||||
if (!skb) {
|
||||
STRP_STATS_INCR(strp->stats.mem_fail);
|
||||
desc->error = -ENOMEM;
|
||||
return 0;
|
||||
}
|
||||
skb->len = head->len;
|
||||
skb->data_len = head->len;
|
||||
skb->truesize = head->truesize;
|
||||
*_strp_msg(skb) = *_strp_msg(head);
|
||||
|
||||
strp->skb_nextp = &head->next;
|
||||
skb_shinfo(skb)->frag_list = head;
|
||||
strp->skb_head = skb;
|
||||
head = skb;
|
||||
} else {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue