Import of kernel-5.14.0-611.54.3.el9_7
This commit is contained in:
parent
77428886fd
commit
f0ec9b5bfe
@ -920,7 +920,8 @@ static int esp_input(struct xfrm_state *x, struct sk_buff *skb)
|
||||
nfrags = 1;
|
||||
|
||||
goto skip_cow;
|
||||
} else if (!skb_has_frag_list(skb)) {
|
||||
} else if (!skb_has_frag_list(skb) &&
|
||||
!skb_has_shared_frag(skb)) {
|
||||
nfrags = skb_shinfo(skb)->nr_frags;
|
||||
nfrags++;
|
||||
|
||||
|
||||
@ -1467,6 +1467,8 @@ ssize_t ip_append_page(struct sock *sk, struct flowi4 *fl4, struct page *page,
|
||||
err = -EMSGSIZE;
|
||||
goto error;
|
||||
}
|
||||
if (!(flags & MSG_NO_SHARED_FRAGS))
|
||||
skb_shinfo(skb)->flags |= SKBFL_SHARED_FRAG;
|
||||
|
||||
if (skb->ip_summed == CHECKSUM_NONE) {
|
||||
__wsum csum;
|
||||
|
||||
@ -960,7 +960,8 @@ static int esp6_input(struct xfrm_state *x, struct sk_buff *skb)
|
||||
nfrags = 1;
|
||||
|
||||
goto skip_cow;
|
||||
} else if (!skb_has_frag_list(skb)) {
|
||||
} else if (!skb_has_frag_list(skb) &&
|
||||
!skb_has_shared_frag(skb)) {
|
||||
nfrags = skb_shinfo(skb)->nr_frags;
|
||||
nfrags++;
|
||||
|
||||
|
||||
@ -225,16 +225,18 @@ static bool rxrpc_input_packet(struct rxrpc_local *local, struct sk_buff **_skb)
|
||||
* decryption.
|
||||
*/
|
||||
if (sp->hdr.securityIndex != 0) {
|
||||
skb = skb_unshare(skb, GFP_ATOMIC);
|
||||
if (!skb) {
|
||||
rxrpc_eaten_skb(*_skb, rxrpc_skb_eaten_by_unshare_nomem);
|
||||
*_skb = NULL;
|
||||
return just_discard;
|
||||
}
|
||||
if (skb_cloned(skb) || skb->data_len) {
|
||||
struct sk_buff *nskb = skb_copy(skb, GFP_ATOMIC);
|
||||
|
||||
if (!nskb) {
|
||||
rxrpc_eaten_skb(*_skb, rxrpc_skb_eaten_by_unshare_nomem);
|
||||
return just_discard;
|
||||
}
|
||||
|
||||
if (skb != *_skb) {
|
||||
rxrpc_eaten_skb(*_skb, rxrpc_skb_eaten_by_unshare);
|
||||
*_skb = skb;
|
||||
consume_skb(*_skb);
|
||||
*_skb = nskb;
|
||||
skb = nskb;
|
||||
rxrpc_new_skb(skb, rxrpc_skb_new_unshared);
|
||||
sp = rxrpc_skb(skb);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user