* [PATCH 6.6.y] Revert "ipv6: save dontfrag in cork"
2025-07-02 9:59 ` Greg KH
@ 2025-07-02 11:37 ` Brett A C Sheffield
2025-07-03 18:34 ` Sasha Levin
2025-07-02 11:38 ` [PATCH 5.15.y] " Brett A C Sheffield
` (2 subsequent siblings)
3 siblings, 1 reply; 15+ messages in thread
From: Brett A C Sheffield @ 2025-07-02 11:37 UTC (permalink / raw)
To: gregkh; +Cc: regressions, stable, willemb, Brett A C Sheffield
From: Brett A C Sheffield (Librecast) <bacs@librecast.net>
This reverts commit 8ebf2709fe4dcd0a1b7b95bf61e529ddcd3cdf51 which is
commit a18dfa9925b9ef6107ea3aa5814ca3c704d34a8a 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>
---
include/linux/ipv6.h | 1 -
net/ipv6/ip6_output.c | 9 ++++-----
2 files changed, 4 insertions(+), 6 deletions(-)
diff --git a/include/linux/ipv6.h b/include/linux/ipv6.h
index d79851c5fabd..af8a771a053c 100644
--- a/include/linux/ipv6.h
+++ b/include/linux/ipv6.h
@@ -199,7 +199,6 @@ struct inet6_cork {
struct ipv6_txoptions *opt;
u8 hop_limit;
u8 tclass;
- u8 dontfrag:1;
};
/* struct ipv6_pinfo - ipv6 private area */
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
index 28777b142240..c86d5dca29df 100644
--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
@@ -1452,7 +1452,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);
@@ -1486,7 +1485,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;
@@ -1542,7 +1541,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)) {
@@ -1914,7 +1913,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);
@@ -2119,7 +2118,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);
base-commit: 3f5b4c104b7d3267d015daf9d9681c5fe3b01224
--
2.49.0
^ permalink raw reply related [flat|nested] 15+ messages in thread* Re: [PATCH 6.6.y] Revert "ipv6: save dontfrag in cork"
2025-07-02 11:37 ` [PATCH 6.6.y] Revert "ipv6: save dontfrag in cork" Brett A C Sheffield
@ 2025-07-03 18:34 ` Sasha Levin
0 siblings, 0 replies; 15+ messages in thread
From: Sasha Levin @ 2025-07-03 18:34 UTC (permalink / raw)
To: stable; +Cc: Brett A C Sheffield, Sasha Levin
[ Sasha's backport helper bot ]
Hi,
✅ All tests passed successfully. No issues detected.
No action required from the submitter.
The upstream commit SHA1 provided is correct: a18dfa9925b9ef6107ea3aa5814ca3c704d34a8a
WARNING: Author mismatch between patch and upstream commit:
Backport author: Brett A C Sheffield<bacs@librecast.net>
Commit author: Willem de Bruijn<willemb@google.com>
Status in newer kernel trees:
6.15.y | Present (exact SHA1)
6.12.y | Present (different SHA1: c1502fc84d1c)
Note: The patch differs from the upstream commit:
---
1: a18dfa9925b9e ! 1: 5a27b7b998176 ipv6: save dontfrag in cork
@@
## Metadata ##
-Author: Willem de Bruijn <willemb@google.com>
+Author: Brett A C Sheffield (Librecast) <bacs@librecast.net>
## Commit message ##
- ipv6: save dontfrag in cork
+ Revert "ipv6: save dontfrag in cork"
- When spanning datagram construction over multiple send calls using
- MSG_MORE, per datagram settings are configured on the first send.
+ This reverts commit 8ebf2709fe4dcd0a1b7b95bf61e529ddcd3cdf51 which is
+ commit a18dfa9925b9ef6107ea3aa5814ca3c704d34a8a upstream.
- That is when ip(6)_setup_cork stores these settings for subsequent use
- in __ip(6)_append_data and others.
+ A regression was introduced when backporting this to the stable kernels
+ without applying previous commits in this series.
- The only flag that escaped this was dontfrag. As a result, a datagram
- could be constructed with df=0 on the first sendmsg, but df=1 on a
- next. Which is what cmsg_ip.sh does in an upcoming MSG_MORE test in
- the "diff" scenario.
+ When sending IPv6 UDP packets larger than MTU, EMSGSIZE was returned
+ instead of fragmenting the packets as expected.
- Changing datagram conditions in the middle of constructing an skb
- makes this already complex code path even more convoluted. It is here
- unintentional. Bring this flag in line with expected sockopt/cmsg
- behavior.
+ As there is no compelling reason for this commit to be present in the
+ stable kernels it should be reverted.
- And stop passing ipc6 to __ip6_append_data, to avoid such issues
- in the future. This is already the case for __ip_append_data.
-
- inet6_cork had a 6 byte hole, so the 1B flag has no impact.
-
- Signed-off-by: Willem de Bruijn <willemb@google.com>
- Reviewed-by: Eric Dumazet <edumazet@google.com>
- Link: https://patch.msgid.link/20250307033620.411611-3-willemdebruijn.kernel@gmail.com
- Signed-off-by: Jakub Kicinski <kuba@kernel.org>
+ Signed-off-by: Brett A C Sheffield <bacs@librecast.net>
## include/linux/ipv6.h ##
@@ include/linux/ipv6.h: struct inet6_cork {
struct ipv6_txoptions *opt;
u8 hop_limit;
u8 tclass;
-+ u8 dontfrag:1;
+- u8 dontfrag:1;
};
/* struct ipv6_pinfo - ipv6 private area */
@@ net/ipv6/ip6_output.c: static int ip6_setup_cork(struct sock *sk, struct inet_co
}
v6_cork->hop_limit = ipc6->hlimit;
v6_cork->tclass = ipc6->tclass;
-+ v6_cork->dontfrag = ipc6->dontfrag;
+- v6_cork->dontfrag = ipc6->dontfrag;
if (rt->dst.flags & DST_XFRM_TUNNEL)
- mtu = READ_ONCE(np->pmtudisc) >= IPV6_PMTUDISC_PROBE ?
+ mtu = np->pmtudisc >= IPV6_PMTUDISC_PROBE ?
READ_ONCE(rt->dst.dev->mtu) : dst_mtu(&rt->dst);
@@ net/ipv6/ip6_output.c: 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, struct ipcm6_cookie *ipc6)
-+ unsigned int flags)
+- unsigned int flags)
++ unsigned int flags, struct ipcm6_cookie *ipc6)
{
struct sk_buff *skb, *skb_prev = NULL;
struct inet_cork *cork = &cork_full->base;
@@ net/ipv6/ip6_output.c: static int __ip6_append_data(struct sock *sk,
if (headersize + transhdrlen > mtu)
goto emsgsize;
-- if (cork->length + length > mtu - headersize && ipc6->dontfrag &&
-+ if (cork->length + length > mtu - headersize && v6_cork->dontfrag &&
+- 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)) {
@@ net/ipv6/ip6_output.c: 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, ipc6);
-+ from, length, transhdrlen, flags);
+- from, length, transhdrlen, flags);
++ from, length, transhdrlen, flags, ipc6);
}
EXPORT_SYMBOL_GPL(ip6_append_data);
@@ net/ipv6/ip6_output.c: 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, ipc6);
-+ flags);
+- flags);
++ flags, ipc6);
if (err) {
__ip6_flush_pending_frames(sk, &queue, cork, &v6_cork);
return ERR_PTR(err);
---
Results of testing on various branches:
| Branch | Patch Apply | Build Test |
|---------------------------|-------------|------------|
| stable/linux-6.6.y | Success | Success |
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 5.15.y] Revert "ipv6: save dontfrag in cork"
2025-07-02 9:59 ` Greg KH
2025-07-02 11:37 ` [PATCH 6.6.y] Revert "ipv6: save dontfrag in cork" Brett A C Sheffield
@ 2025-07-02 11:38 ` Brett A C Sheffield
2025-07-03 18:34 ` Sasha Levin
2025-07-02 11:41 ` [PATCH 5.10.y] " Brett A C Sheffield
2025-07-02 11:41 ` [PATCH 6.1.y] " Brett A C Sheffield
3 siblings, 1 reply; 15+ messages in thread
From: Brett A C Sheffield @ 2025-07-02 11:38 UTC (permalink / raw)
To: gregkh; +Cc: regressions, stable, willemb, Brett A C Sheffield
From: Brett A C Sheffield (Librecast) <bacs@librecast.net>
This reverts commit 2b572c40981138349c04b3f69220ac878a36c561 which is
commit a18dfa9925b9ef6107ea3aa5814ca3c704d34a8a 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>
---
include/linux/ipv6.h | 1 -
net/ipv6/ip6_output.c | 9 ++++-----
2 files changed, 4 insertions(+), 6 deletions(-)
diff --git a/include/linux/ipv6.h b/include/linux/ipv6.h
index 5dfd663b70a2..b6fb76568b01 100644
--- a/include/linux/ipv6.h
+++ b/include/linux/ipv6.h
@@ -195,7 +195,6 @@ struct inet6_cork {
struct ipv6_txoptions *opt;
u8 hop_limit;
u8 tclass;
- u8 dontfrag:1;
};
/**
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
index a71b7a106995..4fcff4fe5a98 100644
--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
@@ -1428,7 +1428,6 @@ static int ip6_setup_cork(struct sock *sk, struct inet_cork_full *cork,
cork->fl.u.ip6 = *fl6;
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);
@@ -1463,7 +1462,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;
unsigned int maxfraglen, fragheaderlen, mtu, orig_mtu, pmtu;
@@ -1520,7 +1519,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_RAW)) {
ipv6_local_rxpmtu(sk, fl6, mtu - headersize +
@@ -1837,7 +1836,7 @@ int ip6_append_data(struct sock *sk,
return __ip6_append_data(sk, fl6, &sk->sk_write_queue, &inet->cork.base,
&np->cork, sk_page_frag(sk), getfrag,
- from, length, transhdrlen, flags);
+ from, length, transhdrlen, flags, ipc6);
}
EXPORT_SYMBOL_GPL(ip6_append_data);
@@ -2032,7 +2031,7 @@ struct sk_buff *ip6_make_skb(struct sock *sk,
err = __ip6_append_data(sk, fl6, &queue, &cork->base, &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);
base-commit: 1c700860e8bc079c5c71d73c55e51865d273943c
--
2.49.0
^ permalink raw reply related [flat|nested] 15+ messages in thread* Re: [PATCH 5.15.y] Revert "ipv6: save dontfrag in cork"
2025-07-02 11:38 ` [PATCH 5.15.y] " Brett A C Sheffield
@ 2025-07-03 18:34 ` Sasha Levin
0 siblings, 0 replies; 15+ messages in thread
From: Sasha Levin @ 2025-07-03 18:34 UTC (permalink / raw)
To: stable; +Cc: Brett A C Sheffield, Sasha Levin
[ Sasha's backport helper bot ]
Hi,
✅ All tests passed successfully. No issues detected.
No action required from the submitter.
The upstream commit SHA1 provided is correct: a18dfa9925b9ef6107ea3aa5814ca3c704d34a8a
WARNING: Author mismatch between patch and upstream commit:
Backport author: Brett A C Sheffield<bacs@librecast.net>
Commit author: Willem de Bruijn<willemb@google.com>
Status in newer kernel trees:
6.15.y | Present (exact SHA1)
6.12.y | Present (different SHA1: c1502fc84d1c)
6.6.y | Present (different SHA1: 8ebf2709fe4d)
6.1.y | Present (different SHA1: 4f809be95d9f)
Note: The patch differs from the upstream commit:
---
1: a18dfa9925b9e < -: ------------- ipv6: save dontfrag in cork
-: ------------- > 1: ec9c7e9fdf2a2 Revert "ipv6: save dontfrag in cork"
---
Results of testing on various branches:
| Branch | Patch Apply | Build Test |
|---------------------------|-------------|------------|
| stable/linux-5.15.y | Success | Success |
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 5.10.y] Revert "ipv6: save dontfrag in cork"
2025-07-02 9:59 ` Greg KH
2025-07-02 11:37 ` [PATCH 6.6.y] Revert "ipv6: save dontfrag in cork" Brett A C Sheffield
2025-07-02 11:38 ` [PATCH 5.15.y] " Brett A C Sheffield
@ 2025-07-02 11:41 ` Brett A C Sheffield
2025-07-03 18:34 ` Sasha Levin
2025-07-02 11:41 ` [PATCH 6.1.y] " Brett A C Sheffield
3 siblings, 1 reply; 15+ messages in thread
From: Brett A C Sheffield @ 2025-07-02 11:41 UTC (permalink / raw)
To: gregkh; +Cc: regressions, stable, willemb, Brett A C Sheffield
From: Brett A C Sheffield (Librecast) <bacs@librecast.net>
This reverts commit 29533d1a54b8de5aaf8c4aa6790dc67d5c14fba5 which is
commit a18dfa9925b9ef6107ea3aa5814ca3c704d34a8a 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>
---
include/linux/ipv6.h | 1 -
net/ipv6/ip6_output.c | 9 ++++-----
2 files changed, 4 insertions(+), 6 deletions(-)
diff --git a/include/linux/ipv6.h b/include/linux/ipv6.h
index 89b3527e0367..d758c131ed5e 100644
--- a/include/linux/ipv6.h
+++ b/include/linux/ipv6.h
@@ -189,7 +189,6 @@ struct inet6_cork {
struct ipv6_txoptions *opt;
u8 hop_limit;
u8 tclass;
- u8 dontfrag:1;
};
/**
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
index f024d89cb0f8..426330b8dfa4 100644
--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
@@ -1416,7 +1416,6 @@ static int ip6_setup_cork(struct sock *sk, struct inet_cork_full *cork,
cork->fl.u.ip6 = *fl6;
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);
@@ -1451,7 +1450,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;
unsigned int maxfraglen, fragheaderlen, mtu, orig_mtu, pmtu;
@@ -1508,7 +1507,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_RAW)) {
ipv6_local_rxpmtu(sk, fl6, mtu - headersize +
@@ -1826,7 +1825,7 @@ int ip6_append_data(struct sock *sk,
return __ip6_append_data(sk, fl6, &sk->sk_write_queue, &inet->cork.base,
&np->cork, sk_page_frag(sk), getfrag,
- from, length, transhdrlen, flags);
+ from, length, transhdrlen, flags, ipc6);
}
EXPORT_SYMBOL_GPL(ip6_append_data);
@@ -2021,7 +2020,7 @@ struct sk_buff *ip6_make_skb(struct sock *sk,
err = __ip6_append_data(sk, fl6, &queue, &cork->base, &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);
base-commit: ecbc622e0f5202e17a2f13dadb0900273faee0eb
--
2.49.0
^ permalink raw reply related [flat|nested] 15+ messages in thread* Re: [PATCH 5.10.y] Revert "ipv6: save dontfrag in cork"
2025-07-02 11:41 ` [PATCH 5.10.y] " Brett A C Sheffield
@ 2025-07-03 18:34 ` Sasha Levin
0 siblings, 0 replies; 15+ messages in thread
From: Sasha Levin @ 2025-07-03 18:34 UTC (permalink / raw)
To: stable; +Cc: Brett A C Sheffield, Sasha Levin
[ Sasha's backport helper bot ]
Hi,
✅ All tests passed successfully. No issues detected.
No action required from the submitter.
The upstream commit SHA1 provided is correct: a18dfa9925b9ef6107ea3aa5814ca3c704d34a8a
WARNING: Author mismatch between patch and upstream commit:
Backport author: Brett A C Sheffield<bacs@librecast.net>
Commit author: Willem de Bruijn<willemb@google.com>
Status in newer kernel trees:
6.15.y | Present (exact SHA1)
6.12.y | Present (different SHA1: c1502fc84d1c)
6.6.y | Present (different SHA1: 8ebf2709fe4d)
6.1.y | Present (different SHA1: 4f809be95d9f)
5.15.y | Present (different SHA1: 2b572c409811)
Note: The patch differs from the upstream commit:
---
1: a18dfa9925b9e < -: ------------- ipv6: save dontfrag in cork
-: ------------- > 1: c6ed53575069f Revert "ipv6: save dontfrag in cork"
---
Results of testing on various branches:
| Branch | Patch Apply | Build Test |
|---------------------------|-------------|------------|
| stable/linux-5.10.y | Success | Success |
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 6.1.y] Revert "ipv6: save dontfrag in cork"
2025-07-02 9:59 ` Greg KH
` (2 preceding siblings ...)
2025-07-02 11:41 ` [PATCH 5.10.y] " Brett A C Sheffield
@ 2025-07-02 11:41 ` Brett A C Sheffield
2025-07-03 18:35 ` Sasha Levin
3 siblings, 1 reply; 15+ messages in thread
From: Brett A C Sheffield @ 2025-07-02 11:41 UTC (permalink / raw)
To: gregkh; +Cc: regressions, stable, willemb, Brett A C Sheffield
From: Brett A C Sheffield (Librecast) <bacs@librecast.net>
This reverts commit 4f809be95d9f3db13d31c574b8764c8d429f0c3b which is
commit a18dfa9925b9ef6107ea3aa5814ca3c704d34a8a 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>
---
include/linux/ipv6.h | 1 -
net/ipv6/ip6_output.c | 9 ++++-----
2 files changed, 4 insertions(+), 6 deletions(-)
diff --git a/include/linux/ipv6.h b/include/linux/ipv6.h
index 9f27e004127b..9a44de45cc1f 100644
--- a/include/linux/ipv6.h
+++ b/include/linux/ipv6.h
@@ -199,7 +199,6 @@ struct inet6_cork {
struct ipv6_txoptions *opt;
u8 hop_limit;
u8 tclass;
- u8 dontfrag:1;
};
/**
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
index cfc276e5a249..f7a225da8525 100644
--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
@@ -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);
base-commit: 7e69c33e4858ea275b2e1c0bf0bea13199e7e91b
--
2.49.0
^ permalink raw reply related [flat|nested] 15+ messages in thread* Re: [PATCH 6.1.y] Revert "ipv6: save dontfrag in cork"
2025-07-02 11:41 ` [PATCH 6.1.y] " Brett A C Sheffield
@ 2025-07-03 18:35 ` Sasha Levin
0 siblings, 0 replies; 15+ messages in thread
From: Sasha Levin @ 2025-07-03 18:35 UTC (permalink / raw)
To: stable; +Cc: Brett A C Sheffield, Sasha Levin
[ Sasha's backport helper bot ]
Hi,
✅ All tests passed successfully. No issues detected.
No action required from the submitter.
The upstream commit SHA1 provided is correct: a18dfa9925b9ef6107ea3aa5814ca3c704d34a8a
WARNING: Author mismatch between patch and upstream commit:
Backport author: Brett A C Sheffield<bacs@librecast.net>
Commit author: Willem de Bruijn<willemb@google.com>
Status in newer kernel trees:
6.15.y | Present (exact SHA1)
6.12.y | Present (different SHA1: c1502fc84d1c)
6.6.y | Present (different SHA1: 8ebf2709fe4d)
Note: The patch differs from the upstream commit:
---
1: a18dfa9925b9e < -: ------------- ipv6: save dontfrag in cork
-: ------------- > 1: ad1fd59a93836 Revert "ipv6: save dontfrag in cork"
---
Results of testing on various branches:
| Branch | Patch Apply | Build Test |
|---------------------------|-------------|------------|
| stable/linux-6.1.y | Success | Success |
^ permalink raw reply [flat|nested] 15+ messages in thread