mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-10-23 07:23:12 +02:00
Revert "ipv6: save dontfrag in cork"
This reverts commit4f809be95d
which is commita18dfa9925
upstream. A regression was introduced when backporting this to the stable kernels without applying previous commits in this series. When sending IPv6 UDP packets larger than MTU, EMSGSIZE was returned instead of fragmenting the packets as expected. As there is no compelling reason for this commit to be present in the stable kernels it should be reverted. Signed-off-by: Brett A C Sheffield <bacs@librecast.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
2a6cc079ae
commit
b80d171c2f
|
@ -199,7 +199,6 @@ struct inet6_cork {
|
|||
struct ipv6_txoptions *opt;
|
||||
u8 hop_limit;
|
||||
u8 tclass;
|
||||
u8 dontfrag:1;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -1450,7 +1450,6 @@ static int ip6_setup_cork(struct sock *sk, struct inet_cork_full *cork,
|
|||
}
|
||||
v6_cork->hop_limit = ipc6->hlimit;
|
||||
v6_cork->tclass = ipc6->tclass;
|
||||
v6_cork->dontfrag = ipc6->dontfrag;
|
||||
if (rt->dst.flags & DST_XFRM_TUNNEL)
|
||||
mtu = np->pmtudisc >= IPV6_PMTUDISC_PROBE ?
|
||||
READ_ONCE(rt->dst.dev->mtu) : dst_mtu(&rt->dst);
|
||||
|
@ -1484,7 +1483,7 @@ static int __ip6_append_data(struct sock *sk,
|
|||
int getfrag(void *from, char *to, int offset,
|
||||
int len, int odd, struct sk_buff *skb),
|
||||
void *from, size_t length, int transhdrlen,
|
||||
unsigned int flags)
|
||||
unsigned int flags, struct ipcm6_cookie *ipc6)
|
||||
{
|
||||
struct sk_buff *skb, *skb_prev = NULL;
|
||||
struct inet_cork *cork = &cork_full->base;
|
||||
|
@ -1540,7 +1539,7 @@ static int __ip6_append_data(struct sock *sk,
|
|||
if (headersize + transhdrlen > mtu)
|
||||
goto emsgsize;
|
||||
|
||||
if (cork->length + length > mtu - headersize && v6_cork->dontfrag &&
|
||||
if (cork->length + length > mtu - headersize && ipc6->dontfrag &&
|
||||
(sk->sk_protocol == IPPROTO_UDP ||
|
||||
sk->sk_protocol == IPPROTO_ICMPV6 ||
|
||||
sk->sk_protocol == IPPROTO_RAW)) {
|
||||
|
@ -1885,7 +1884,7 @@ int ip6_append_data(struct sock *sk,
|
|||
|
||||
return __ip6_append_data(sk, &sk->sk_write_queue, &inet->cork,
|
||||
&np->cork, sk_page_frag(sk), getfrag,
|
||||
from, length, transhdrlen, flags);
|
||||
from, length, transhdrlen, flags, ipc6);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(ip6_append_data);
|
||||
|
||||
|
@ -2090,7 +2089,7 @@ struct sk_buff *ip6_make_skb(struct sock *sk,
|
|||
err = __ip6_append_data(sk, &queue, cork, &v6_cork,
|
||||
¤t->task_frag, getfrag, from,
|
||||
length + exthdrlen, transhdrlen + exthdrlen,
|
||||
flags);
|
||||
flags, ipc6);
|
||||
if (err) {
|
||||
__ip6_flush_pending_frames(sk, &queue, cork, &v6_cork);
|
||||
return ERR_PTR(err);
|
||||
|
|
Loading…
Reference in New Issue
Block a user