netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [REGRESSION][BISECTED][PATCH] net: ipv4: fix regression in broadcast routes
@ 2025-08-22 16:50 Brett A C Sheffield
  2025-08-23  1:32 ` Jakub Kicinski
  2025-08-28  8:17 ` [REGRESSION][BISECTED][PATCH] net: ipv4: fix regression in broadcast routes kernel test robot
  0 siblings, 2 replies; 18+ messages in thread
From: Brett A C Sheffield @ 2025-08-22 16:50 UTC (permalink / raw)
  To: regressions
  Cc: Brett A C Sheffield, netdev, stable, davem, dsahern, oscmaes92,
	kuba

Fix the regression introduced in 9e30ecf23b1b whereby IPv4 broadcast
packets were having their ethernet destination field mangled.  This
broke WOL magic packets and likely other IPv4 broadcast.

The regression can be observed by sending an IPv4 WOL packet using
the wakeonlan program to any ethernet address:

 wakeonlan 46:3b:ad:61:e0:5d

and capturing the packet with tcpdump:

 tcpdump -i eth0 -w /tmp/bad.cap dst port 9

The ethernet destination MUST be ff:ff:ff:ff:ff:ff for broadcast, but is
mangled with 9e30ecf23b1b applied.

Revert the change made in 9e30ecf23b1b and ensure the MTU value for
broadcast routes is retained by calling ip_dst_init_metrics() directly,
avoiding the need to enter the main code block in rt_set_nexthop().

Simplify the code path taken for broadcast packets back to the original
before the regression, adding only the call to ip_dst_init_metrics().

The broadcast_pmtu.sh selftest provided with the original patch still
passes with this patch applied.

Fixes: 9e30ecf23b1b ("net: ipv4: fix incorrect MTU in broadcast routes")
Signed-off-by: Brett A C Sheffield <bacs@librecast.net>
---
 net/ipv4/route.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index f639a2ae881a..eaf78e128aca 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -2588,6 +2588,7 @@ static struct rtable *__mkroute_output(const struct fib_result *res,
 	do_cache = true;
 	if (type == RTN_BROADCAST) {
 		flags |= RTCF_BROADCAST | RTCF_LOCAL;
+		fi = NULL;
 	} else if (type == RTN_MULTICAST) {
 		flags |= RTCF_MULTICAST | RTCF_LOCAL;
 		if (!ip_check_mc_rcu(in_dev, fl4->daddr, fl4->saddr,
@@ -2657,8 +2658,12 @@ static struct rtable *__mkroute_output(const struct fib_result *res,
 			rth->dst.output = ip_mc_output;
 			RT_CACHE_STAT_INC(out_slow_mc);
 		}
+		if (type == RTN_BROADCAST) {
+			/* ensure MTU value for broadcast routes is retained */
+			ip_dst_init_metrics(&rth->dst, res->fi->fib_metrics);
+		}
 #ifdef CONFIG_IP_MROUTE
-		if (type == RTN_MULTICAST) {
+		else if (type == RTN_MULTICAST) {
 			if (IN_DEV_MFORWARD(in_dev) &&
 			    !ipv4_is_local_multicast(fl4->daddr)) {
 				rth->dst.input = ip_mr_input;

base-commit: 01b9128c5db1b470575d07b05b67ffa3cb02ebf1
-- 
2.49.1


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* Re: [REGRESSION][BISECTED][PATCH] net: ipv4: fix regression in broadcast routes
  2025-08-22 16:50 [REGRESSION][BISECTED][PATCH] net: ipv4: fix regression in broadcast routes Brett A C Sheffield
@ 2025-08-23  1:32 ` Jakub Kicinski
  2025-08-23 12:13   ` [PATCH v2 1/2] selftests: net: add test for broadcast destination Brett A C Sheffield
                     ` (2 more replies)
  2025-08-28  8:17 ` [REGRESSION][BISECTED][PATCH] net: ipv4: fix regression in broadcast routes kernel test robot
  1 sibling, 3 replies; 18+ messages in thread
From: Jakub Kicinski @ 2025-08-23  1:32 UTC (permalink / raw)
  To: Brett A C Sheffield
  Cc: regressions, netdev, stable, davem, dsahern, oscmaes92

Thanks for bisecting and fixing!

> The broadcast_pmtu.sh selftest provided with the original patch still
> passes with this patch applied.

Hm, yes, AFACT we're losing PMTU discovery but perhaps original commit
wasn't concerned with that. Hopefully Oscar can comment.

On Fri, 22 Aug 2025 16:50:51 +0000 Brett A C Sheffield wrote:
> +		if (type == RTN_BROADCAST) {
> +			/* ensure MTU value for broadcast routes is retained */
> +			ip_dst_init_metrics(&rth->dst, res->fi->fib_metrics);

You need to check if res->fi is actually set before using it

Could you add a selftest / test case for the scenario we broke?
selftests can be in C / bash / Python. If bash hopefully socat
can be used to repro, cause it looks like wakeonlan is not very
widely packaged.

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [PATCH v2 1/2] selftests: net: add test for broadcast destination
  2025-08-23  1:32 ` Jakub Kicinski
@ 2025-08-23 12:13   ` Brett A C Sheffield
  2025-08-23 12:13   ` [PATCH v2 2/2] net: ipv4: fix regression in broadcast routes Brett A C Sheffield
  2025-08-23 12:24   ` [REGRESSION][BISECTED][PATCH] " Brett Sheffield
  2 siblings, 0 replies; 18+ messages in thread
From: Brett A C Sheffield @ 2025-08-23 12:13 UTC (permalink / raw)
  To: regressions
  Cc: netdev, stable, davem, dsahern, oscmaes92, kuba,
	Brett A C Sheffield

Add test to check the broadcast ethernet destination field is set
correctly.

This test uses the tcpdump and socat programs.

Send a UDP broadcast packet to UDP port 9 (DISCARD), capture this
with tcpdump and ensure that all bits of the 6 octet ethernet destination
are correctly set.

Cc: stable@vger.kernel.org
Signed-off-by: Brett A C Sheffield <bacs@librecast.net>
Link: https://lore.kernel.org/regressions/20250822165231.4353-4-bacs@librecast.net
---
 tools/testing/selftests/net/Makefile          |  1 +
 .../selftests/net/broadcast_ether_dst.sh      | 38 +++++++++++++++++++
 2 files changed, 39 insertions(+)
 create mode 100755 tools/testing/selftests/net/broadcast_ether_dst.sh

diff --git a/tools/testing/selftests/net/Makefile b/tools/testing/selftests/net/Makefile
index b31a71f2b372..463642a78eea 100644
--- a/tools/testing/selftests/net/Makefile
+++ b/tools/testing/selftests/net/Makefile
@@ -116,6 +116,7 @@ TEST_GEN_FILES += skf_net_off
 TEST_GEN_FILES += tfo
 TEST_PROGS += tfo_passive.sh
 TEST_PROGS += broadcast_pmtu.sh
+TEST_PROGS += broadcast_ether_dst.sh
 TEST_PROGS += ipv6_force_forwarding.sh
 
 # YNL files, must be before "include ..lib.mk"
diff --git a/tools/testing/selftests/net/broadcast_ether_dst.sh b/tools/testing/selftests/net/broadcast_ether_dst.sh
new file mode 100755
index 000000000000..de6abe3513b6
--- /dev/null
+++ b/tools/testing/selftests/net/broadcast_ether_dst.sh
@@ -0,0 +1,38 @@
+#!/bin/bash -eu
+# SPDX-License-Identifier: GPL-2.0
+#
+# Author: Brett A C Sheffield <bacs@librecast.net>
+#
+# Ensure destination ethernet field is correctly set for
+# broadcast packets
+
+if ! which tcpdump > /dev/null 2>&1; then
+        echo "No tcpdump found. Required for this test."
+        exit $ERR
+fi
+
+CAPFILE=$(mktemp -u cap.XXXXXXXXXX)
+
+# start tcpdump listening on udp port 9
+# tcpdump will exit after receiving a single packet
+# timeout will kill tcpdump if it is still running after 2s
+timeout 2s tcpdump -c 1 -w ${CAPFILE} udp port 9 > /dev/null 2>&1 &
+PID=$!
+sleep 0.1 # let tcpdump wake up
+
+echo "Testing ethernet broadcast destination"
+
+# send broadcast UDP packet to port 9 (DISCARD)
+echo "Alonso is a good boy" | socat - udp-datagram:255.255.255.255:9,broadcast
+
+# wait for tcpdump for exit after receiving packet
+wait $PID
+
+# compare ethernet destination field to ff:ff:ff:ff:ff:ff
+# pcap has a 24 octet header + 16 octet header for each packet
+# ethernet destination is the first field in the packet
+printf '\xff\xff\xff\xff\xff\xff'| cmp -i40:0 -n6 ${CAPFILE} > /dev/null 2>&1
+RESULT=$?
+
+rm -f "${CAPFILE}"
+exit $RESULT

base-commit: 01b9128c5db1b470575d07b05b67ffa3cb02ebf1
-- 
2.49.1


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH v2 2/2] net: ipv4: fix regression in broadcast routes
  2025-08-23  1:32 ` Jakub Kicinski
  2025-08-23 12:13   ` [PATCH v2 1/2] selftests: net: add test for broadcast destination Brett A C Sheffield
@ 2025-08-23 12:13   ` Brett A C Sheffield
  2025-08-23 12:24   ` [REGRESSION][BISECTED][PATCH] " Brett Sheffield
  2 siblings, 0 replies; 18+ messages in thread
From: Brett A C Sheffield @ 2025-08-23 12:13 UTC (permalink / raw)
  To: regressions
  Cc: netdev, stable, davem, dsahern, oscmaes92, kuba,
	Brett A C Sheffield

Fix the regression introduced in 9e30ecf23b1b whereby IPv4 broadcast
packets were having their ethernet destination field mangled.  The
problem was first observed with WOL magic packets but affects all UDP
IPv4 broadcast packets.

The regression can be observed by sending an IPv4 WOL packet using
the wakeonlan program to any ethernet address:

 wakeonlan 46:3b:ad:61:e0:5d

and capturing the packet with tcpdump:

 tcpdump -i eth0 -w /tmp/bad.cap dst port 9

The ethernet destination MUST be ff:ff:ff:ff:ff:ff for broadcast, but is
mangled in affected kernels.

Revert the change made in 9e30ecf23b1b and ensure the MTU value for
broadcast routes is retained by calling ip_dst_init_metrics() directly,
avoiding the need to enter the main code block in rt_set_nexthop().

Simplify the code path taken for broadcast packets back to the original
before the regression, adding only the call to ip_dst_init_metrics().

The broadcast_pmtu.sh selftest provided with the original patch still
passes with this patch applied.

Cc: stable@vger.kernel.org
Fixes: 9e30ecf23b1b ("net: ipv4: fix incorrect MTU in broadcast routes")
Link: https://lore.kernel.org/regressions/20250822165231.4353-4-bacs@librecast.net
Signed-off-by: Brett A C Sheffield <bacs@librecast.net>
---
 net/ipv4/route.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index f639a2ae881a..ab4d72a59c7b 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -2588,6 +2588,7 @@ static struct rtable *__mkroute_output(const struct fib_result *res,
 	do_cache = true;
 	if (type == RTN_BROADCAST) {
 		flags |= RTCF_BROADCAST | RTCF_LOCAL;
+		fi = NULL;
 	} else if (type == RTN_MULTICAST) {
 		flags |= RTCF_MULTICAST | RTCF_LOCAL;
 		if (!ip_check_mc_rcu(in_dev, fl4->daddr, fl4->saddr,
@@ -2657,8 +2658,12 @@ static struct rtable *__mkroute_output(const struct fib_result *res,
 			rth->dst.output = ip_mc_output;
 			RT_CACHE_STAT_INC(out_slow_mc);
 		}
+		if (type == RTN_BROADCAST && res->fi) {
+			/* ensure MTU value for broadcast routes is retained */
+			ip_dst_init_metrics(&rth->dst, res->fi->fib_metrics);
+		}
 #ifdef CONFIG_IP_MROUTE
-		if (type == RTN_MULTICAST) {
+		else if (type == RTN_MULTICAST) {
 			if (IN_DEV_MFORWARD(in_dev) &&
 			    !ipv4_is_local_multicast(fl4->daddr)) {
 				rth->dst.input = ip_mr_input;
-- 
2.49.1


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* Re: [REGRESSION][BISECTED][PATCH] net: ipv4: fix regression in broadcast routes
  2025-08-23  1:32 ` Jakub Kicinski
  2025-08-23 12:13   ` [PATCH v2 1/2] selftests: net: add test for broadcast destination Brett A C Sheffield
  2025-08-23 12:13   ` [PATCH v2 2/2] net: ipv4: fix regression in broadcast routes Brett A C Sheffield
@ 2025-08-23 12:24   ` Brett Sheffield
  2025-08-25  6:02     ` Oscar Maes
  2 siblings, 1 reply; 18+ messages in thread
From: Brett Sheffield @ 2025-08-23 12:24 UTC (permalink / raw)
  To: Jakub Kicinski; +Cc: regressions, netdev, stable, davem, dsahern, oscmaes92

On 2025-08-22 18:32, Jakub Kicinski wrote:
> Thanks for bisecting and fixing!
> 
> > The broadcast_pmtu.sh selftest provided with the original patch still
> > passes with this patch applied.
> 
> Hm, yes, AFACT we're losing PMTU discovery but perhaps original commit
> wasn't concerned with that. Hopefully Oscar can comment.

Indeed. This takes it back to the previous behaviour.

> On Fri, 22 Aug 2025 16:50:51 +0000 Brett A C Sheffield wrote:
> > +		if (type == RTN_BROADCAST) {
> > +			/* ensure MTU value for broadcast routes is retained */
> > +			ip_dst_init_metrics(&rth->dst, res->fi->fib_metrics);
> 
> You need to check if res->fi is actually set before using it

Ah, yes.  Fixed.

> Could you add a selftest / test case for the scenario we broke?
> selftests can be in C / bash / Python. If bash hopefully socat
> can be used to repro, cause it looks like wakeonlan is not very
> widely packaged.

Self-test added using socat as requested. If you want this wrapped in namespaces
etc. let me know. I started doing that, but decided a simpler test without
requiring root was better and cleaner.

Thanks for the review Jakub.  v2 patches sent.

Cheers,


Brett
-- 
Brett Sheffield (he/him)
Librecast - Decentralising the Internet with Multicast
https://librecast.net/
https://blog.brettsheffield.com/

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [REGRESSION][BISECTED][PATCH] net: ipv4: fix regression in broadcast routes
  2025-08-23 12:24   ` [REGRESSION][BISECTED][PATCH] " Brett Sheffield
@ 2025-08-25  6:02     ` Oscar Maes
  2025-08-25  6:09       ` [PATCH net 1/2] net: ipv4: fix regression in local-broadcast routes Oscar Maes
  0 siblings, 1 reply; 18+ messages in thread
From: Oscar Maes @ 2025-08-25  6:02 UTC (permalink / raw)
  To: Brett Sheffield, Brett A C Sheffield, Jakub Kicinski
  Cc: regressions, netdev, stable, davem, dsahern

On Sat, Aug 23, 2025 at 02:24:39PM +0200, Brett Sheffield wrote:
> On 2025-08-22 18:32, Jakub Kicinski wrote:
> > Thanks for bisecting and fixing!
> > 
> > > The broadcast_pmtu.sh selftest provided with the original patch still
> > > passes with this patch applied.
> > 
> > Hm, yes, AFACT we're losing PMTU discovery but perhaps original commit
> > wasn't concerned with that. Hopefully Oscar can comment.
> 
> Indeed. This takes it back to the previous behaviour.
> 
> > On Fri, 22 Aug 2025 16:50:51 +0000 Brett A C Sheffield wrote:
> > > +		if (type == RTN_BROADCAST) {
> > > +			/* ensure MTU value for broadcast routes is retained */
> > > +			ip_dst_init_metrics(&rth->dst, res->fi->fib_metrics);
> > 
> > You need to check if res->fi is actually set before using it
> 
> Ah, yes.  Fixed.
> 
> > Could you add a selftest / test case for the scenario we broke?
> > selftests can be in C / bash / Python. If bash hopefully socat
> > can be used to repro, cause it looks like wakeonlan is not very
> > widely packaged.
> 
> Self-test added using socat as requested. If you want this wrapped in namespaces
> etc. let me know. I started doing that, but decided a simpler test without
> requiring root was better and cleaner.
> 
> Thanks for the review Jakub.  v2 patches sent.
> 
> Cheers,
> 
> 
> Brett
> -- 
> Brett Sheffield (he/him)
> Librecast - Decentralising the Internet with Multicast
> https://librecast.net/
> https://blog.brettsheffield.com/

Replying to you both.

I missed this regression when I tested the blamed commit. Glad this surfaced quickly.

Just to clarify, the issue isn't that the destination address is "mangled".
The removal of fi = NULL inadvertently causes a gateway to be assigned to
local broadcast packets (see the call to rt_set_nexthop), which results in the
observed regression. __mkroute_output is still correct for directed broadcast packets
due to them having their own routes in the local table. The regression can easily be
fixed by setting the fib info to NULL for lbcast packets.

The submitted selftest only fails if a default gateway is configured, but does not
set one up. I'll submit my own patches to fix the regression and improve the
selftest shortly.

Oscar

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [PATCH net 1/2] net: ipv4: fix regression in local-broadcast routes
  2025-08-25  6:02     ` Oscar Maes
@ 2025-08-25  6:09       ` Oscar Maes
  2025-08-25  6:09         ` [PATCH net 2/2] selftests: net: add test for destination in broadcast packets Oscar Maes
  2025-08-25 22:56         ` [PATCH net 1/2] net: ipv4: fix regression in local-broadcast routes Jakub Kicinski
  0 siblings, 2 replies; 18+ messages in thread
From: Oscar Maes @ 2025-08-25  6:09 UTC (permalink / raw)
  To: bacs, brett, kuba; +Cc: davem, dsahern, netdev, regressions, stable, Oscar Maes

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.

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>
---
 net/ipv4/route.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index f639a2ae881a..98d237e3ec04 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -2575,9 +2575,12 @@ static struct rtable *__mkroute_output(const struct fib_result *res,
 		    !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))
 		return ERR_PTR(-EINVAL);
-- 
2.39.5


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH net 2/2] selftests: net: add test for destination in broadcast packets
  2025-08-25  6:09       ` [PATCH net 1/2] net: ipv4: fix regression in local-broadcast routes Oscar Maes
@ 2025-08-25  6:09         ` Oscar Maes
  2025-08-25  7:03           ` Brett A C Sheffield
  2025-08-25 22:56         ` [PATCH net 1/2] net: ipv4: fix regression in local-broadcast routes Jakub Kicinski
  1 sibling, 1 reply; 18+ messages in thread
From: Oscar Maes @ 2025-08-25  6:09 UTC (permalink / raw)
  To: bacs, brett, kuba; +Cc: davem, dsahern, netdev, regressions, stable, Oscar Maes

Add test to check the broadcast ethernet destination field is set
correctly.

This test sends a broadcast ping, captures it using tcpdump and
ensures that all bits of the 6 octet ethernet destination address
are correctly set by examining the output capture file.

Signed-off-by: Oscar Maes <oscmaes92@gmail.com>
---
 tools/testing/selftests/net/Makefile          |  1 +
 .../selftests/net/broadcast_ether_dst.sh      | 82 +++++++++++++++++++
 2 files changed, 83 insertions(+)
 create mode 100755 tools/testing/selftests/net/broadcast_ether_dst.sh

diff --git a/tools/testing/selftests/net/Makefile b/tools/testing/selftests/net/Makefile
index b31a71f2b372..463642a78eea 100644
--- a/tools/testing/selftests/net/Makefile
+++ b/tools/testing/selftests/net/Makefile
@@ -116,6 +116,7 @@ TEST_GEN_FILES += skf_net_off
 TEST_GEN_FILES += tfo
 TEST_PROGS += tfo_passive.sh
 TEST_PROGS += broadcast_pmtu.sh
+TEST_PROGS += broadcast_ether_dst.sh
 TEST_PROGS += ipv6_force_forwarding.sh
 
 # YNL files, must be before "include ..lib.mk"
diff --git a/tools/testing/selftests/net/broadcast_ether_dst.sh b/tools/testing/selftests/net/broadcast_ether_dst.sh
new file mode 100755
index 000000000000..865b5c7c8c8a
--- /dev/null
+++ b/tools/testing/selftests/net/broadcast_ether_dst.sh
@@ -0,0 +1,82 @@
+#!/bin/bash
+# SPDX-License-Identifier: GPL-2.0
+#
+# Author: Brett A C Sheffield <bacs@librecast.net>
+# Author: Oscar Maes <oscmaes92@gmail.com>
+#
+# Ensure destination ethernet field is correctly set for
+# broadcast packets
+
+source lib.sh
+
+CLIENT_IP4="192.168.0.1"
+GW_IP4="192.168.0.2"
+
+setup() {
+	setup_ns CLIENT_NS SERVER_NS
+
+	ip -net "${SERVER_NS}" link add link1 type veth \
+		peer name link0 netns "${CLIENT_NS}"
+
+	ip -net "${CLIENT_NS}" link set link0 up
+	ip -net "${CLIENT_NS}" addr add "${CLIENT_IP4}"/24 dev link0
+
+	ip -net "${SERVER_NS}" link set link1 up
+
+	ip -net "${CLIENT_NS}" route add default via "${GW_IP4}"
+	ip netns exec "${CLIENT_NS}" arp -s "${GW_IP4}" 00:11:22:33:44:55
+}
+
+cleanup() {
+	rm -f "${CAPFILE}"
+	ip -net "${SERVER_NS}" link del link1
+	cleanup_ns "${CLIENT_NS}" "${SERVER_NS}"
+}
+
+test_broadcast_ether_dst() {
+	local rc=0
+	CAPFILE=$(mktemp -u cap.XXXXXXXXXX)
+
+	echo "Testing ethernet broadcast destination"
+
+	# start tcpdump listening for icmp
+	# tcpdump will exit after receiving a single packet
+	# timeout will kill tcpdump if it is still running after 2s
+	timeout 2s ip netns exec "${CLIENT_NS}" \
+		tcpdump -i link0 -c 1 -w "${CAPFILE}" icmp &> /dev/null &
+	pid=$!
+	sleep 0.1 # let tcpdump wake up
+
+	# send broadcast ping
+	ip netns exec "${CLIENT_NS}" \
+		ping -W0.01 -c1 -b 255.255.255.255 &> /dev/null
+
+	# wait for tcpdump for exit after receiving packet
+	wait "${pid}"
+
+	# compare ethernet destination field to ff:ff:ff:ff:ff:ff
+	ether_dst=$(tcpdump -r "${CAPFILE}" -tnne 2>/dev/null | \
+			awk '{sub(/,/,"",$3); print $3}')
+	if [[ "${ether_dst}" == "ff:ff:ff:ff:ff:ff" ]]; then
+		echo "[ OK ]"
+		rc="${ksft_pass}"
+	else
+		echo "[FAIL] expected dst ether addr to be ff:ff:ff:ff:ff:ff," \
+			"got ${ether_dst}"
+		rc="${ksft_fail}"
+	fi
+
+	return "${rc}"
+}
+
+if [ ! -x "$(command -v tcpdump)" ]; then
+	echo "SKIP: Could not run test without tcpdump tool"
+	exit "${ksft_skip}"
+fi
+
+trap cleanup EXIT
+
+setup
+test_broadcast_ether_dst
+
+exit $?
-- 
2.39.5


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* Re: [PATCH net 2/2] selftests: net: add test for destination in broadcast packets
  2025-08-25  6:09         ` [PATCH net 2/2] selftests: net: add test for destination in broadcast packets Oscar Maes
@ 2025-08-25  7:03           ` Brett A C Sheffield
  0 siblings, 0 replies; 18+ messages in thread
From: Brett A C Sheffield @ 2025-08-25  7:03 UTC (permalink / raw)
  To: Oscar Maes; +Cc: kuba, davem, dsahern, netdev, regressions, stable

On 2025-08-25 08:09, Oscar Maes wrote:
> Add test to check the broadcast ethernet destination field is set
> correctly.
> 
> This test sends a broadcast ping, captures it using tcpdump and
> ensures that all bits of the 6 octet ethernet destination address
> are correctly set by examining the output capture file.
> 
> Signed-off-by: Oscar Maes <oscmaes92@gmail.com>

Thanks Oscar.

Signed-off-by: Brett A C Sheffield <bacs@librecast.net>

Also, please add back the
  Cc: stable@vger.kernel.org
line for the fix as this affects the stable kernels that went out last week.

Cheers,


Brett

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH net 1/2] net: ipv4: fix regression in local-broadcast routes
  2025-08-25  6:09       ` [PATCH net 1/2] net: ipv4: fix regression in local-broadcast routes Oscar Maes
  2025-08-25  6:09         ` [PATCH net 2/2] selftests: net: add test for destination in broadcast packets Oscar Maes
@ 2025-08-25 22:56         ` Jakub Kicinski
  2025-08-26 12:11           ` Oscar Maes
  1 sibling, 1 reply; 18+ messages in thread
From: Jakub Kicinski @ 2025-08-25 22:56 UTC (permalink / raw)
  To: Oscar Maes; +Cc: bacs, brett, davem, dsahern, netdev, regressions, stable

On Mon, 25 Aug 2025 08:09:17 +0200 Oscar Maes wrote:
> 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.

Meaning that 9e30ecf23b1b would still change behavior for the subnet
broadcast address?

> diff --git a/net/ipv4/route.c b/net/ipv4/route.c
> index f639a2ae881a..98d237e3ec04 100644
> --- a/net/ipv4/route.c
> +++ b/net/ipv4/route.c
> @@ -2575,9 +2575,12 @@ static struct rtable *__mkroute_output(const struct fib_result *res,
>  		    !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))
>  		return ERR_PTR(-EINVAL);

nit: please add curly braces around all branches of this if / else if /
else ladder, per kernel coding style guide.
-- 
pw-bot: cr

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH net 1/2] net: ipv4: fix regression in local-broadcast routes
  2025-08-25 22:56         ` [PATCH net 1/2] net: ipv4: fix regression in local-broadcast routes Jakub Kicinski
@ 2025-08-26 12:11           ` Oscar Maes
  2025-08-26 12:17             ` [PATCH net v2 " Oscar Maes
  2025-08-26 12:17             ` [PATCH net v2 2/2] selftests: net: add test for destination in broadcast packets Oscar Maes
  0 siblings, 2 replies; 18+ messages in thread
From: Oscar Maes @ 2025-08-26 12:11 UTC (permalink / raw)
  To: Jakub Kicinski; +Cc: bacs, brett, davem, dsahern, netdev, regressions, stable

On Mon, Aug 25, 2025 at 03:56:30PM -0700, Jakub Kicinski wrote:
> On Mon, 25 Aug 2025 08:09:17 +0200 Oscar Maes wrote:
> > 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.
> 
> Meaning that 9e30ecf23b1b would still change behavior for the subnet
> broadcast address?
> 

Yes. This is OK because subnet broadcast addresses have separate entries
in the local fib table.

> > diff --git a/net/ipv4/route.c b/net/ipv4/route.c
> > index f639a2ae881a..98d237e3ec04 100644
> > --- a/net/ipv4/route.c
> > +++ b/net/ipv4/route.c
> > @@ -2575,9 +2575,12 @@ static struct rtable *__mkroute_output(const struct fib_result *res,
> >  		    !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))
> >  		return ERR_PTR(-EINVAL);
> 
> nit: please add curly braces around all branches of this if / else if /
> else ladder, per kernel coding style guide.
> -- 
> pw-bot: cr

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [PATCH net v2 1/2] net: ipv4: fix regression in local-broadcast routes
  2025-08-26 12:11           ` Oscar Maes
@ 2025-08-26 12:17             ` Oscar Maes
  2025-08-26 12:17             ` [PATCH net v2 2/2] selftests: net: add test for destination in broadcast packets Oscar Maes
  1 sibling, 0 replies; 18+ messages in thread
From: Oscar Maes @ 2025-08-26 12:17 UTC (permalink / raw)
  To: bacs, brett, kuba; +Cc: davem, dsahern, netdev, regressions, stable, Oscar Maes

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>
---

Thanks to Brett Sheffield for finding the regression and writing
the initial fix!
---
 net/ipv4/route.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index 1f212b2ce4c6..24c898b7654f 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -2575,12 +2575,16 @@ static struct rtable *__mkroute_output(const struct fib_result *res,
 		    !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;
-- 
2.39.5


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH net v2 2/2] selftests: net: add test for destination in broadcast packets
  2025-08-26 12:11           ` Oscar Maes
  2025-08-26 12:17             ` [PATCH net v2 " Oscar Maes
@ 2025-08-26 12:17             ` Oscar Maes
  2025-08-27  1:29               ` Jakub Kicinski
  1 sibling, 1 reply; 18+ messages in thread
From: Oscar Maes @ 2025-08-26 12:17 UTC (permalink / raw)
  To: bacs, brett, kuba; +Cc: davem, dsahern, netdev, regressions, stable, Oscar Maes

Add test to check the broadcast ethernet destination field is set
correctly.

This test sends a broadcast ping, captures it using tcpdump and
ensures that all bits of the 6 octet ethernet destination address
are correctly set by examining the output capture file.

Signed-off-by: Oscar Maes <oscmaes92@gmail.com>
---

Thanks to Brett Sheffield for the initial selftest!
---
 tools/testing/selftests/net/Makefile          |  1 +
 .../selftests/net/broadcast_ether_dst.sh      | 82 +++++++++++++++++++
 2 files changed, 83 insertions(+)
 create mode 100755 tools/testing/selftests/net/broadcast_ether_dst.sh

diff --git a/tools/testing/selftests/net/Makefile b/tools/testing/selftests/net/Makefile
index eef0b8f8a7b0..9bbe1d010f5a 100644
--- a/tools/testing/selftests/net/Makefile
+++ b/tools/testing/selftests/net/Makefile
@@ -116,6 +116,7 @@ TEST_GEN_FILES += skf_net_off
 TEST_GEN_FILES += tfo
 TEST_PROGS += tfo_passive.sh
 TEST_PROGS += broadcast_pmtu.sh
+TEST_PROGS += broadcast_ether_dst.sh
 TEST_PROGS += ipv6_force_forwarding.sh
 TEST_PROGS += route_hint.sh
 
diff --git a/tools/testing/selftests/net/broadcast_ether_dst.sh b/tools/testing/selftests/net/broadcast_ether_dst.sh
new file mode 100755
index 000000000000..865b5c7c8c8a
--- /dev/null
+++ b/tools/testing/selftests/net/broadcast_ether_dst.sh
@@ -0,0 +1,82 @@
+#!/bin/bash
+# SPDX-License-Identifier: GPL-2.0
+#
+# Author: Brett A C Sheffield <bacs@librecast.net>
+# Author: Oscar Maes <oscmaes92@gmail.com>
+#
+# Ensure destination ethernet field is correctly set for
+# broadcast packets
+
+source lib.sh
+
+CLIENT_IP4="192.168.0.1"
+GW_IP4="192.168.0.2"
+
+setup() {
+	setup_ns CLIENT_NS SERVER_NS
+
+	ip -net "${SERVER_NS}" link add link1 type veth \
+		peer name link0 netns "${CLIENT_NS}"
+
+	ip -net "${CLIENT_NS}" link set link0 up
+	ip -net "${CLIENT_NS}" addr add "${CLIENT_IP4}"/24 dev link0
+
+	ip -net "${SERVER_NS}" link set link1 up
+
+	ip -net "${CLIENT_NS}" route add default via "${GW_IP4}"
+	ip netns exec "${CLIENT_NS}" arp -s "${GW_IP4}" 00:11:22:33:44:55
+}
+
+cleanup() {
+	rm -f "${CAPFILE}"
+	ip -net "${SERVER_NS}" link del link1
+	cleanup_ns "${CLIENT_NS}" "${SERVER_NS}"
+}
+
+test_broadcast_ether_dst() {
+	local rc=0
+	CAPFILE=$(mktemp -u cap.XXXXXXXXXX)
+
+	echo "Testing ethernet broadcast destination"
+
+	# start tcpdump listening for icmp
+	# tcpdump will exit after receiving a single packet
+	# timeout will kill tcpdump if it is still running after 2s
+	timeout 2s ip netns exec "${CLIENT_NS}" \
+		tcpdump -i link0 -c 1 -w "${CAPFILE}" icmp &> /dev/null &
+	pid=$!
+	sleep 0.1 # let tcpdump wake up
+
+	# send broadcast ping
+	ip netns exec "${CLIENT_NS}" \
+		ping -W0.01 -c1 -b 255.255.255.255 &> /dev/null
+
+	# wait for tcpdump for exit after receiving packet
+	wait "${pid}"
+
+	# compare ethernet destination field to ff:ff:ff:ff:ff:ff
+	ether_dst=$(tcpdump -r "${CAPFILE}" -tnne 2>/dev/null | \
+			awk '{sub(/,/,"",$3); print $3}')
+	if [[ "${ether_dst}" == "ff:ff:ff:ff:ff:ff" ]]; then
+		echo "[ OK ]"
+		rc="${ksft_pass}"
+	else
+		echo "[FAIL] expected dst ether addr to be ff:ff:ff:ff:ff:ff," \
+			"got ${ether_dst}"
+		rc="${ksft_fail}"
+	fi
+
+	return "${rc}"
+}
+
+if [ ! -x "$(command -v tcpdump)" ]; then
+	echo "SKIP: Could not run test without tcpdump tool"
+	exit "${ksft_skip}"
+fi
+
+trap cleanup EXIT
+
+setup
+test_broadcast_ether_dst
+
+exit $?
-- 
2.39.5


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* Re: [PATCH net v2 2/2] selftests: net: add test for destination in broadcast packets
  2025-08-26 12:17             ` [PATCH net v2 2/2] selftests: net: add test for destination in broadcast packets Oscar Maes
@ 2025-08-27  1:29               ` Jakub Kicinski
  0 siblings, 0 replies; 18+ messages in thread
From: Jakub Kicinski @ 2025-08-27  1:29 UTC (permalink / raw)
  To: Oscar Maes; +Cc: bacs, brett, davem, dsahern, netdev, regressions, stable

On Tue, 26 Aug 2025 14:17:50 +0200 Oscar Maes wrote:
>  TEST_GEN_FILES += tfo
>  TEST_PROGS += tfo_passive.sh
>  TEST_PROGS += broadcast_pmtu.sh
> +TEST_PROGS += broadcast_ether_dst.sh
>  TEST_PROGS += ipv6_force_forwarding.sh
>  TEST_PROGS += route_hint.sh

This applies to net with a fuzz. Could you respin against net/main?
Please repost as a new thread, you can add a link to the discussion
under ---, use the lore archive.

Also nit: maybe lets try to sort somewhat alphabetically, e before p?

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [REGRESSION][BISECTED][PATCH] net: ipv4: fix regression in broadcast routes
  2025-08-22 16:50 [REGRESSION][BISECTED][PATCH] net: ipv4: fix regression in broadcast routes Brett A C Sheffield
  2025-08-23  1:32 ` Jakub Kicinski
@ 2025-08-28  8:17 ` kernel test robot
  2025-08-28 10:35   ` Paolo Abeni
  1 sibling, 1 reply; 18+ messages in thread
From: kernel test robot @ 2025-08-28  8:17 UTC (permalink / raw)
  To: Brett A C Sheffield
  Cc: oe-lkp, lkp, netdev, regressions, Brett A C Sheffield, stable,
	davem, dsahern, oscmaes92, kuba, oliver.sang



Hello,

kernel test robot noticed "Oops:general_protection_fault,probably_for_non-canonical_address#:#[##]SMP_KASAN_PTI" on:

commit: a1b445e1dcd6ee9682d77347faf3545b53354d71 ("[REGRESSION][BISECTED][PATCH] net: ipv4: fix regression in broadcast routes")
url: https://github.com/intel-lab-lkp/linux/commits/Brett-A-C-Sheffield/net-ipv4-fix-regression-in-broadcast-routes/20250825-181407
patch link: https://lore.kernel.org/all/20250822165231.4353-4-bacs@librecast.net/
patch subject: [REGRESSION][BISECTED][PATCH] net: ipv4: fix regression in broadcast routes

in testcase: trinity
version: trinity-x86_64-ba2360ed-1_20241228
with following parameters:

	runtime: 300s
	group: group-04
	nr_groups: 5



config: x86_64-randconfig-104-20250826
compiler: clang-20
test machine: qemu-system-x86_64 -enable-kvm -cpu SandyBridge -smp 2 -m 16G

(please refer to attached dmesg/kmsg for entire log/backtrace)



If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <oliver.sang@intel.com>
| Closes: https://lore.kernel.org/oe-lkp/202508281637.f1c00f73-lkp@intel.com


[  344.224405][  T239]
[  346.380232][  T239] [main] 270958 iterations. [F:200215 S:70364 HI:20538]
[  346.380362][  T239]
[  348.540466][  T239] [main] 282649 iterations. [F:208752 S:73502 HI:20538]
[  348.540488][  T239]
[  352.276620][ T4267] Oops: general protection fault, probably for non-canonical address 0xdffffc000000000b: 0000 [#1] SMP KASAN PTI
[  352.278585][ T4267] KASAN: null-ptr-deref in range [0x0000000000000058-0x000000000000005f]
[  352.279982][ T4267] CPU: 0 UID: 65534 PID: 4267 Comm: trinity-c0 Not tainted 6.17.0-rc2-00174-ga1b445e1dcd6 #1 PREEMPT(none)
[  352.281748][ T4267] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014
[ 352.283361][ T4267] RIP: 0010:ip_route_output_key_hash_rcu (kbuild/src/consumer/net/ipv4/route.c:2663) 
[ 352.284480][ T4267] Code: 3c 10 00 48 8b 5c 24 60 74 12 48 89 df e8 d7 d5 f3 fc 48 ba 00 00 00 00 00 fc ff df 48 8b 1b 48 83 c3 58 48 89 d8 48 c1 e8 03 <80> 3c 10 00 74 12 48 89 df e8 b1 d5 f3 fc 48 ba 00 00 00 00 00 fc
All code
========
   0:	3c 10                	cmp    $0x10,%al
   2:	00 48 8b             	add    %cl,-0x75(%rax)
   5:	5c                   	pop    %rsp
   6:	24 60                	and    $0x60,%al
   8:	74 12                	je     0x1c
   a:	48 89 df             	mov    %rbx,%rdi
   d:	e8 d7 d5 f3 fc       	call   0xfffffffffcf3d5e9
  12:	48 ba 00 00 00 00 00 	movabs $0xdffffc0000000000,%rdx
  19:	fc ff df 
  1c:	48 8b 1b             	mov    (%rbx),%rbx
  1f:	48 83 c3 58          	add    $0x58,%rbx
  23:	48 89 d8             	mov    %rbx,%rax
  26:	48 c1 e8 03          	shr    $0x3,%rax
  2a:*	80 3c 10 00          	cmpb   $0x0,(%rax,%rdx,1)		<-- trapping instruction
  2e:	74 12                	je     0x42
  30:	48 89 df             	mov    %rbx,%rdi
  33:	e8 b1 d5 f3 fc       	call   0xfffffffffcf3d5e9
  38:	48                   	rex.W
  39:	ba 00 00 00 00       	mov    $0x0,%edx
  3e:	00 fc                	add    %bh,%ah

Code starting with the faulting instruction
===========================================
   0:	80 3c 10 00          	cmpb   $0x0,(%rax,%rdx,1)
   4:	74 12                	je     0x18
   6:	48 89 df             	mov    %rbx,%rdi
   9:	e8 b1 d5 f3 fc       	call   0xfffffffffcf3d5bf
   e:	48                   	rex.W
   f:	ba 00 00 00 00       	mov    $0x0,%edx
  14:	00 fc                	add    %bh,%ah
[  352.287420][ T4267] RSP: 0018:ffffc900037cf7e0 EFLAGS: 00010202
[  352.288406][ T4267] RAX: 000000000000000b RBX: 0000000000000058 RCX: 0000000000000000
[  352.289715][ T4267] RDX: dffffc0000000000 RSI: 0000000090000000 RDI: ffff888155e8a0a8
[  352.291007][ T4267] RBP: ffff88815a690640 R08: ffff88815a6906d8 R09: 0000000000000002
[  352.292287][ T4267] R10: ffff88815a6906d2 R11: ffffed102b4d20dc R12: ffff888118e51701
[  352.293502][ T4267] R13: 1ffff1102b4d20ce R14: ffff88815a6906d4 R15: 0000000090000000
[  352.294417][ T4267] FS:  00007fa824b10740(0000) GS:ffff8884259dd000(0000) knlGS:0000000000000000
[  352.295629][ T4267] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  352.296648][ T4267] CR2: 0000000000000008 CR3: 00000001284fc000 CR4: 00000000000406f0
[  352.297771][ T4267] Call Trace:
[  352.298404][ T4267]  <TASK>
[ 352.298958][ T4267] ? ip_route_output_key_hash (kbuild/src/consumer/include/linux/rcupdate.h:331 kbuild/src/consumer/include/linux/rcupdate.h:841 kbuild/src/consumer/net/ipv4/route.c:2700) 
[ 352.299842][ T4267] ip_route_output_key_hash (kbuild/src/consumer/net/ipv4/route.c:2701) 
[ 352.300711][ T4267] ip_route_output_flow (kbuild/src/consumer/include/linux/err.h:70 kbuild/src/consumer/net/ipv4/route.c:2930) 
[ 352.301444][ T4267] __ip4_datagram_connect (kbuild/src/consumer/include/net/route.h:355) 


The kernel config and materials to reproduce are available at:
https://download.01.org/0day-ci/archive/20250828/202508281637.f1c00f73-lkp@intel.com



-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [REGRESSION][BISECTED][PATCH] net: ipv4: fix regression in broadcast routes
  2025-08-28  8:17 ` [REGRESSION][BISECTED][PATCH] net: ipv4: fix regression in broadcast routes kernel test robot
@ 2025-08-28 10:35   ` Paolo Abeni
  2025-08-28 10:46     ` Brett A C Sheffield
  0 siblings, 1 reply; 18+ messages in thread
From: Paolo Abeni @ 2025-08-28 10:35 UTC (permalink / raw)
  To: kernel test robot, Brett A C Sheffield
  Cc: oe-lkp, lkp, netdev, regressions, stable, davem, dsahern,
	oscmaes92, kuba

On 8/28/25 10:17 AM, kernel test robot wrote:
> commit: a1b445e1dcd6ee9682d77347faf3545b53354d71 ("[REGRESSION][BISECTED][PATCH] net: ipv4: fix regression in broadcast routes")
> url: https://github.com/intel-lab-lkp/linux/commits/Brett-A-C-Sheffield/net-ipv4-fix-regression-in-broadcast-routes/20250825-181407
> patch link: https://lore.kernel.org/all/20250822165231.4353-4-bacs@librecast.net/
> patch subject: [REGRESSION][BISECTED][PATCH] net: ipv4: fix regression in broadcast routes
> 
> in testcase: trinity
> version: trinity-x86_64-ba2360ed-1_20241228
> with following parameters:
> 
> 	runtime: 300s
> 	group: group-04
> 	nr_groups: 5
> 
> 
> 
> config: x86_64-randconfig-104-20250826
> compiler: clang-20
> test machine: qemu-system-x86_64 -enable-kvm -cpu SandyBridge -smp 2 -m 16G
> 
> (please refer to attached dmesg/kmsg for entire log/backtrace)

Since I just merged v3 of the mentioned patch and I'm wrapping the PR
for Linus, the above scared me more than a bit.

AFAICS the issue reported here is the  unconditional 'fi' dereference
spotted and fixed during code review, so no real problem after all.

/P


^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [REGRESSION][BISECTED][PATCH] net: ipv4: fix regression in broadcast routes
  2025-08-28 10:35   ` Paolo Abeni
@ 2025-08-28 10:46     ` Brett A C Sheffield
  2025-08-29  2:08       ` Oliver Sang
  0 siblings, 1 reply; 18+ messages in thread
From: Brett A C Sheffield @ 2025-08-28 10:46 UTC (permalink / raw)
  To: Paolo Abeni
  Cc: kernel test robot, oe-lkp, lkp, netdev, regressions, stable,
	davem, dsahern, oscmaes92, kuba

On 2025-08-28 12:35, Paolo Abeni wrote:
> On 8/28/25 10:17 AM, kernel test robot wrote:
> > commit: a1b445e1dcd6ee9682d77347faf3545b53354d71 ("[REGRESSION][BISECTED][PATCH] net: ipv4: fix regression in broadcast routes")
> > url: https://github.com/intel-lab-lkp/linux/commits/Brett-A-C-Sheffield/net-ipv4-fix-regression-in-broadcast-routes/20250825-181407
> > patch link: https://lore.kernel.org/all/20250822165231.4353-4-bacs@librecast.net/
> > patch subject: [REGRESSION][BISECTED][PATCH] net: ipv4: fix regression in broadcast routes
> > 
> > in testcase: trinity
> > version: trinity-x86_64-ba2360ed-1_20241228
> > with following parameters:
> > 
> > 	runtime: 300s
> > 	group: group-04
> > 	nr_groups: 5
> > 
> > 
> > 
> > config: x86_64-randconfig-104-20250826
> > compiler: clang-20
> > test machine: qemu-system-x86_64 -enable-kvm -cpu SandyBridge -smp 2 -m 16G
> > 
> > (please refer to attached dmesg/kmsg for entire log/backtrace)
> 
> Since I just merged v3 of the mentioned patch and I'm wrapping the PR
> for Linus, the above scared me more than a bit.
> 
> AFAICS the issue reported here is the  unconditional 'fi' dereference
> spotted and fixed during code review, so no real problem after all.

Correct. Jakub spotted the error, it was fixed in a v2 5 days ago, and has since
been superceded by Oscar's patch, so nothing to worry about.

Is there a way to indicate to bots not to check superceded patches. In this case
I'd have though my v2 would have been a signal? Is there something else I should
have done?

Brett
-- 

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [REGRESSION][BISECTED][PATCH] net: ipv4: fix regression in broadcast routes
  2025-08-28 10:46     ` Brett A C Sheffield
@ 2025-08-29  2:08       ` Oliver Sang
  0 siblings, 0 replies; 18+ messages in thread
From: Oliver Sang @ 2025-08-29  2:08 UTC (permalink / raw)
  To: Brett A C Sheffield
  Cc: Paolo Abeni, oe-lkp, lkp, netdev, regressions, stable, davem,
	dsahern, oscmaes92, kuba, oliver.sang

hi, Brett, hi, Paolo Abeni,

On Thu, Aug 28, 2025 at 10:46:42AM +0000, Brett A C Sheffield wrote:
> On 2025-08-28 12:35, Paolo Abeni wrote:
> > On 8/28/25 10:17 AM, kernel test robot wrote:
> > > commit: a1b445e1dcd6ee9682d77347faf3545b53354d71 ("[REGRESSION][BISECTED][PATCH] net: ipv4: fix regression in broadcast routes")
> > > url: https://github.com/intel-lab-lkp/linux/commits/Brett-A-C-Sheffield/net-ipv4-fix-regression-in-broadcast-routes/20250825-181407
> > > patch link: https://lore.kernel.org/all/20250822165231.4353-4-bacs@librecast.net/
> > > patch subject: [REGRESSION][BISECTED][PATCH] net: ipv4: fix regression in broadcast routes
> > > 
> > > in testcase: trinity
> > > version: trinity-x86_64-ba2360ed-1_20241228
> > > with following parameters:
> > > 
> > > 	runtime: 300s
> > > 	group: group-04
> > > 	nr_groups: 5
> > > 
> > > 
> > > 
> > > config: x86_64-randconfig-104-20250826
> > > compiler: clang-20
> > > test machine: qemu-system-x86_64 -enable-kvm -cpu SandyBridge -smp 2 -m 16G
> > > 
> > > (please refer to attached dmesg/kmsg for entire log/backtrace)
> > 
> > Since I just merged v3 of the mentioned patch and I'm wrapping the PR
> > for Linus, the above scared me more than a bit.
> > 
> > AFAICS the issue reported here is the  unconditional 'fi' dereference
> > spotted and fixed during code review, so no real problem after all.
> 
> Correct. Jakub spotted the error, it was fixed in a v2 5 days ago, and has since
> been superceded by Oscar's patch, so nothing to worry about.
> 
> Is there a way to indicate to bots not to check superceded patches. In this case
> I'd have though my v2 would have been a signal? Is there something else I should
> have done?

sorry for this. our bot failed to recognize the mail structure to spot out the
v2 patch.

we'll consider how to improve it or be more careful while manual check. sorry
for inconvience caused.

> 
> Brett
> -- 
> 

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2025-08-29  2:08 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-22 16:50 [REGRESSION][BISECTED][PATCH] net: ipv4: fix regression in broadcast routes Brett A C Sheffield
2025-08-23  1:32 ` Jakub Kicinski
2025-08-23 12:13   ` [PATCH v2 1/2] selftests: net: add test for broadcast destination Brett A C Sheffield
2025-08-23 12:13   ` [PATCH v2 2/2] net: ipv4: fix regression in broadcast routes Brett A C Sheffield
2025-08-23 12:24   ` [REGRESSION][BISECTED][PATCH] " Brett Sheffield
2025-08-25  6:02     ` Oscar Maes
2025-08-25  6:09       ` [PATCH net 1/2] net: ipv4: fix regression in local-broadcast routes Oscar Maes
2025-08-25  6:09         ` [PATCH net 2/2] selftests: net: add test for destination in broadcast packets Oscar Maes
2025-08-25  7:03           ` Brett A C Sheffield
2025-08-25 22:56         ` [PATCH net 1/2] net: ipv4: fix regression in local-broadcast routes Jakub Kicinski
2025-08-26 12:11           ` Oscar Maes
2025-08-26 12:17             ` [PATCH net v2 " Oscar Maes
2025-08-26 12:17             ` [PATCH net v2 2/2] selftests: net: add test for destination in broadcast packets Oscar Maes
2025-08-27  1:29               ` Jakub Kicinski
2025-08-28  8:17 ` [REGRESSION][BISECTED][PATCH] net: ipv4: fix regression in broadcast routes kernel test robot
2025-08-28 10:35   ` Paolo Abeni
2025-08-28 10:46     ` Brett A C Sheffield
2025-08-29  2:08       ` Oliver Sang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).