mirror of
git://git.openwrt.org/openwrt/openwrt.git
synced 2025-12-11 23:22:11 -05:00
kernel: Fix kernel regression in local-broadcast routes
Backport a patch from upstream kernel 6.17-rc4 which fixes a regression introduced in the latest stable kernel versions. This is already in the Linus stable queues for the next minor kernel updates. Fixes:1c92e468d5("kernel: bump 6.6 to 6.6.103") Fixes:f39c7e103f("kernel: bump 6.12 to 6.12.43") Reported-by: Goetz Goerisch <ggoerisch@gmail.com> Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
parent
41aceb2de8
commit
c589fb7baf
@ -0,0 +1,47 @@
|
||||
From 5189446ba995556eaa3755a6e875bc06675b88bd Mon Sep 17 00:00:00 2001
|
||||
From: Oscar Maes <oscmaes92@gmail.com>
|
||||
Date: Wed, 27 Aug 2025 08:23:21 +0200
|
||||
Subject: [PATCH] net: ipv4: fix regression in local-broadcast routes
|
||||
|
||||
Commit 9e30ecf23b1b ("net: ipv4: fix incorrect MTU in broadcast routes")
|
||||
introduced a regression where local-broadcast packets would have their
|
||||
gateway set in __mkroute_output, which was caused by fi = NULL being
|
||||
removed.
|
||||
|
||||
Fix this by resetting the fib_info for local-broadcast packets. This
|
||||
preserves the intended changes for directed-broadcast packets.
|
||||
|
||||
Cc: stable@vger.kernel.org
|
||||
Fixes: 9e30ecf23b1b ("net: ipv4: fix incorrect MTU in broadcast routes")
|
||||
Reported-by: Brett A C Sheffield <bacs@librecast.net>
|
||||
Closes: https://lore.kernel.org/regressions/20250822165231.4353-4-bacs@librecast.net
|
||||
Signed-off-by: Oscar Maes <oscmaes92@gmail.com>
|
||||
Reviewed-by: David Ahern <dsahern@kernel.org>
|
||||
Link: https://patch.msgid.link/20250827062322.4807-1-oscmaes92@gmail.com
|
||||
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
---
|
||||
net/ipv4/route.c | 10 +++++++---
|
||||
1 file changed, 7 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/net/ipv4/route.c
|
||||
+++ b/net/ipv4/route.c
|
||||
@@ -2532,12 +2532,16 @@ static struct rtable *__mkroute_output(c
|
||||
!netif_is_l3_master(dev_out))
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
- if (ipv4_is_lbcast(fl4->daddr))
|
||||
+ if (ipv4_is_lbcast(fl4->daddr)) {
|
||||
type = RTN_BROADCAST;
|
||||
- else if (ipv4_is_multicast(fl4->daddr))
|
||||
+
|
||||
+ /* reset fi to prevent gateway resolution */
|
||||
+ fi = NULL;
|
||||
+ } else if (ipv4_is_multicast(fl4->daddr)) {
|
||||
type = RTN_MULTICAST;
|
||||
- else if (ipv4_is_zeronet(fl4->daddr))
|
||||
+ } else if (ipv4_is_zeronet(fl4->daddr)) {
|
||||
return ERR_PTR(-EINVAL);
|
||||
+ }
|
||||
|
||||
if (dev_out->flags & IFF_LOOPBACK)
|
||||
flags |= RTCF_LOCAL;
|
||||
@ -0,0 +1,47 @@
|
||||
From 5189446ba995556eaa3755a6e875bc06675b88bd Mon Sep 17 00:00:00 2001
|
||||
From: Oscar Maes <oscmaes92@gmail.com>
|
||||
Date: Wed, 27 Aug 2025 08:23:21 +0200
|
||||
Subject: [PATCH] net: ipv4: fix regression in local-broadcast routes
|
||||
|
||||
Commit 9e30ecf23b1b ("net: ipv4: fix incorrect MTU in broadcast routes")
|
||||
introduced a regression where local-broadcast packets would have their
|
||||
gateway set in __mkroute_output, which was caused by fi = NULL being
|
||||
removed.
|
||||
|
||||
Fix this by resetting the fib_info for local-broadcast packets. This
|
||||
preserves the intended changes for directed-broadcast packets.
|
||||
|
||||
Cc: stable@vger.kernel.org
|
||||
Fixes: 9e30ecf23b1b ("net: ipv4: fix incorrect MTU in broadcast routes")
|
||||
Reported-by: Brett A C Sheffield <bacs@librecast.net>
|
||||
Closes: https://lore.kernel.org/regressions/20250822165231.4353-4-bacs@librecast.net
|
||||
Signed-off-by: Oscar Maes <oscmaes92@gmail.com>
|
||||
Reviewed-by: David Ahern <dsahern@kernel.org>
|
||||
Link: https://patch.msgid.link/20250827062322.4807-1-oscmaes92@gmail.com
|
||||
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
---
|
||||
net/ipv4/route.c | 10 +++++++---
|
||||
1 file changed, 7 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/net/ipv4/route.c
|
||||
+++ b/net/ipv4/route.c
|
||||
@@ -2547,12 +2547,16 @@ static struct rtable *__mkroute_output(c
|
||||
!netif_is_l3_master(dev_out))
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
- if (ipv4_is_lbcast(fl4->daddr))
|
||||
+ if (ipv4_is_lbcast(fl4->daddr)) {
|
||||
type = RTN_BROADCAST;
|
||||
- else if (ipv4_is_multicast(fl4->daddr))
|
||||
+
|
||||
+ /* reset fi to prevent gateway resolution */
|
||||
+ fi = NULL;
|
||||
+ } else if (ipv4_is_multicast(fl4->daddr)) {
|
||||
type = RTN_MULTICAST;
|
||||
- else if (ipv4_is_zeronet(fl4->daddr))
|
||||
+ } else if (ipv4_is_zeronet(fl4->daddr)) {
|
||||
return ERR_PTR(-EINVAL);
|
||||
+ }
|
||||
|
||||
if (dev_out->flags & IFF_LOOPBACK)
|
||||
flags |= RTCF_LOCAL;
|
||||
Loading…
Reference in New Issue
Block a user