Skip to contentSkip to conversation

FAILED: patch "[PATCH] ipv4: Fix route deletion when nexthop info is not specified" failed to apply to 6.0-stable tree

PATCH [email protected] 2 participants 3 messages Dec 3, 2022 – Dec 4, 2022

Subsystems (4)
lore
Share & tools
lore

[email protected]

author maintainer
#0 lore raw

The patch below does not apply to the 6.0-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.

Possible dependencies:

d5082d386eee ("ipv4: Fix route deletion when nexthop info is not specified") 61b91eb33a69 ("ipv4: Handle attempt to delete multipath route when fib_info contains an nh reference")

thanks,

greg k-h

------------------ original commit in Linus's tree ------------------

From d5082d386eee7e8ec46fa8581932c81a4961dcef Mon Sep 17 00:00:00 2001
From: Ido Schimmel <[email protected]>
Date: Thu, 24 Nov 2022 23:09:32 +0200
Subject: [PATCH] ipv4: Fix route deletion when nexthop info is not specified

When the kernel receives a route deletion request from user space it tries to delete a route that matches the route attributes specified in the request.

If only prefix information is specified in the request, the kernel should delete the first matching FIB alias regardless of its associated FIB info. However, an error is currently returned when the FIB info is backed by a nexthop object:

 # ip nexthop add id 1 via 192.0.2.2 dev dummy10
 # ip route add 198.51.100.0/24 nhid 1
 # ip route del 198.51.100.0/24
 RTNETLINK answers: No such process

Fix by matching on such a FIB info when legacy nexthop attributes are not specified in the request. An earlier check already covers the case where a nexthop ID is specified in the request.

Add tests that cover these flows. Before the fix:

 # ./fib_nexthops.sh -t ipv4_fcnal
 ...
 TEST: Delete route when not specifying nexthop attributes           [FAIL]

Tests passed: 11
Tests failed: 1

After the fix:

 # ./fib_nexthops.sh -t ipv4_fcnal
 ...
 TEST: Delete route when not specifying nexthop attributes           [ OK ]

Tests passed: 12
Tests failed: 0

No regressions in other tests:

 # ./fib_nexthops.sh
 ...
 Tests passed: 228
 Tests failed:   0
 # ./fib_tests.sh
 ...
 Tests passed: 186
 Tests failed:   0
Fixes 493ced1ac47c ("ipv4: Allow routes to use nexthop objects")
Fixes 6bf92d70e690 ("net: ipv4: fix route with nexthop object delete warning")
Fixes 61b91eb33a69 ("ipv4: Handle attempt to delete multipath route when fib_info contains an nh reference")
net/ipv4/fib_semantics.c +5 -3
index f721c308248b..19a662003eef 100644
@@ -888,9 +888,11 @@ int fib_nh_match(struct net *net, struct fib_config *cfg, struct fib_info *fi,
 		return 1;
 	}
 
-	/* cannot match on nexthop object attributes */
-	if (fi->nh)
-		return 1;
+	if (fi->nh) {
+		if (cfg->fc_oif || cfg->fc_gw_family || cfg->fc_mp)
+			return 1;
+		return 0;
+	}
 
 	if (cfg->fc_oif || cfg->fc_gw_family) {
 		struct fib_nh *nh;
tools/testing/selftests/net/fib_nexthops.sh +11 -0
index ee5e98204d3d..a47b26ab48f2 100755
@@ -1228,6 +1228,17 @@ ipv4_fcnal()
 	run_cmd "$IP ro add 172.16.101.0/24 nhid 21"
 	run_cmd "$IP ro del 172.16.101.0/24 nexthop via 172.16.1.7 dev veth1 nexthop via 172.16.1.8 dev veth1"
 	log_test $? 2 "Delete multipath route with only nh id based entry"
+
+	run_cmd "$IP nexthop add id 22 via 172.16.1.6 dev veth1"
+	run_cmd "$IP ro add 172.16.102.0/24 nhid 22"
+	run_cmd "$IP ro del 172.16.102.0/24 dev veth1"
+	log_test $? 2 "Delete route when specifying only nexthop device"
+
+	run_cmd "$IP ro del 172.16.102.0/24 via 172.16.1.6"
+	log_test $? 2 "Delete route when specifying only gateway"
+
+	run_cmd "$IP ro del 172.16.102.0/24"
+	log_test $? 0 "Delete route when not specifying nexthop attributes"
 }
 
 ipv4_grp_fcnal()
maintainer
#1 lore raw
Quoted 10 lines · On Sat, Dec 03, 2022 at 12:00:01PM +0100, [email protected] wrote:

The patch below does not apply to the 6.0-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.

Possible dependencies:

d5082d386eee ("ipv4: Fix route deletion when nexthop info is not specified") 61b91eb33a69 ("ipv4: Handle attempt to delete multipath route when fib_info contains an nh reference")

Yes, this one is missing. Will send both.

maintainer
#2 lore raw
Quoted 7 lines · Ido Schimmel
Quoted 6 lines · On Sat, Dec 03, 2022 at 12:00:01PM +0100, [email protected] wrote:

The patch below does not apply to the 6.0-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.

Quoted 6 lines
Quoted 4 lines

Possible dependencies:

d5082d386eee ("ipv4: Fix route deletion when nexthop info is not specified") 61b91eb33a69 ("ipv4: Handle attempt to delete multipath route when fib_info contains an nh reference")

Yes, this one is missing. Will send both.

Just saw the mail from Sasha. Looks like he already took care of it. Both patches are in 6.0 queue:

https://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git/tree/queue-6.0/ipv4-handle-attempt-to-delete-multipath-route-when-f.patch
https://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git/tree/queue-6.0/ipv4-fix-route-deletion-when-nexthop-info-is-not-spe.patch

Thanks