make -C tools/testing/selftests TARGETS=net TEST_PROGS=fib_nexthops.sh TESST_GEN_PROGS="" run_tests make: Entering directory '/home/virtme/testing-1/tools/testing/selftests' make[1]: Entering directory '/home/virtme/testing-1/tools/testing/selftests/net' make[1]: Nothing to be done for 'all'. make[1]: Leaving directory '/home/virtme/testing-1/tools/testing/selftests/net' make[1]: Entering directory '/home/virtme/testing-1/tools/testing/selftests/net' TAP version 13 1..1 # timeout set to 3600 # selftests: net: fib_nexthops.sh [ 2.633583] ip (272) used greatest stack depth: 11752 bytes left # # Basic functional tests # ---------------------- # TEST: List with nothing defined [ OK ] # TEST: Nexthop get on non-existent id [ OK ] # TEST: Nexthop with no device or gateway [ OK ] # TEST: Nexthop with down device [ OK ] # TEST: Nexthop with device that is linkdown [ OK ] # TEST: Nexthop with device only [ OK ] # TEST: Nexthop with duplicate id [ OK ] # TEST: Blackhole nexthop [ OK ] # TEST: Blackhole nexthop with other attributes [ OK ] # TEST: Blackhole nexthop with loopback device down [ OK ] # TEST: Maximum nexthop ID dump [ OK ] # TEST: Create group [ OK ] # TEST: Create group with blackhole nexthop [ OK ] # TEST: Create multipath group where 1 path is a blackhole [ OK ] # TEST: Multipath group can not have a member replaced by blackhole [ OK ] # TEST: Create group with non-existent nexthop [ OK ] # TEST: Create group with same nexthop multiple times [ OK ] # TEST: Replace nexthop with nexthop group [ OK ] # TEST: Replace nexthop group with nexthop [ OK ] # TEST: Nexthop group and device [ OK ] # TEST: Test proto flush [ OK ] # TEST: Nexthop group and blackhole [ OK ] # TEST: Large scale nexthop flushing [ OK ] # # Basic resilient nexthop group functional tests # ---------------------------------------------- # TEST: Add a nexthop group with default parameters [ OK ] # TEST: Get a nexthop group with default parameters [ OK ] # TEST: Get a nexthop group with non-default parameters [ OK ] # TEST: Add a nexthop group with 0 buckets [ OK ] # TEST: Replace nexthop group parameters [ OK ] # TEST: Get a nexthop group after replacing parameters [ OK ] # TEST: Replace idle timer [ OK ] # TEST: Get a nexthop group after replacing idle timer [ OK ] # TEST: Replace unbalanced timer [ OK ] # TEST: Get a nexthop group after replacing unbalanced timer [ OK ] # TEST: Replace with no parameters [ OK ] # TEST: Get a nexthop group after replacing no parameters [ OK ] # TEST: Replace nexthop group type - implicit [ OK ] # TEST: Replace nexthop group type - explicit [ OK ] # TEST: Replace number of nexthop buckets [ OK ] # TEST: Get a nexthop group after replacing with invalid parameters [ OK ] # TEST: Dump all nexthop buckets [ OK ] # TEST: Dump all nexthop buckets in a group [ OK ] # TEST: All nexthop buckets report a positive near-zero idle time [ OK ] # TEST: Dump all nexthop buckets with a specific nexthop device [ OK ] # TEST: Dump all nexthop buckets with a specific nexthop identifier [ OK ] # TEST: Dump all nexthop buckets in a non-existent group [ OK ] # TEST: Dump all nexthop buckets in a non-resilient group [ OK ] # TEST: Dump all nexthop buckets using a non-existent device [ OK ] # TEST: Dump all nexthop buckets with invalid 'groups' keyword [ OK ] # TEST: Dump all nexthop buckets with invalid 'fdb' keyword [ OK ] # TEST: Maximum nexthop ID dump [ OK ] # TEST: Get a valid nexthop bucket [ OK ] # TEST: Get a nexthop bucket with valid group, but invalid index [ OK ] # TEST: Get a nexthop bucket from a non-resilient group [ OK ] # TEST: Get a nexthop bucket from a non-existent group [ OK ] # TEST: Initial bucket allocation [ OK ] # TEST: Bucket allocation after replace [ OK ] # TEST: Buckets migrated after idle timer change [ OK ] # # IPv4 functional # ---------------------- # TEST: Create nexthop with id, gw, dev [ OK ] # TEST: Get nexthop by id [ OK ] # TEST: Delete nexthop by id [ OK ] # TEST: Create nexthop - gw only [ OK ] # TEST: Create nexthop - invalid gw+dev combination [ OK ] # TEST: Create nexthop - gw+dev and onlink [ OK ] # TEST: Nexthops removed on admin down [ OK ] # TEST: Delete nexthop route warning [ OK ] # TEST: Delete multipath route with only nh id based entry [ OK ] # TEST: Delete route when specifying only nexthop device [ OK ] # TEST: Delete route when specifying only gateway [ OK ] # TEST: Delete route when not specifying nexthop attributes [ OK ] # # IPv4 groups functional # ---------------------- # TEST: Create nexthop group with single nexthop [ OK ] # TEST: Get nexthop group by id [ OK ] # TEST: Delete nexthop group by id [ OK ] # TEST: Nexthop group with multiple nexthops [ OK ] # TEST: Nexthop group updated when entry is deleted [ OK ] # TEST: Nexthop group with weighted nexthops [ OK ] # TEST: Weighted nexthop group updated when entry is deleted [ OK ] # TEST: Nexthops in groups removed on admin down [ OK ] # TEST: Multiple groups with same nexthop [ OK ] # TEST: Nexthops in group removed on admin down - mixed group [ OK ] # TEST: Nexthop group can not have a group as an entry [ OK ] # TEST: Nexthop group with a blackhole entry [ OK ] # TEST: Nexthop group can not have a blackhole and another nexthop [ OK ] # # IPv4 resilient groups functional # -------------------------------- # TEST: Nexthop group updated when entry is deleted [ OK ] # TEST: Nexthop buckets updated when entry is deleted [ OK ] # TEST: Nexthop group updated after replace [ OK ] # TEST: Nexthop buckets updated after replace [ OK ] # TEST: Nexthop group updated when entry is deleted - nECMP [ OK ] # TEST: Nexthop buckets updated when entry is deleted - nECMP [ OK ] # TEST: Nexthop group updated after replace - nECMP [ OK ] # TEST: Nexthop buckets updated after replace - nECMP [ OK ] # TEST: IPv6 nexthop with IPv4 route [ OK ] # TEST: IPv6 nexthop with IPv4 route [ OK ] [ 14.760746] [ 14.760921] ============================= [ 14.761145] WARNING: suspicious RCU usage [ 14.761457] 6.8.0-rc4-virtme #1 Not tainted [ 14.761684] ----------------------------- [ 14.761899] include/net/nexthop.h:320 suspicious rcu_dereference_protected() usage! [ 14.762318] [ 14.762318] other info that might help us debug this: [ 14.762318] [ 14.762740] [ 14.762740] rcu_scheduler_active = 2, debug_locks = 1 [ 14.763087] 2 locks held by ip/1107: [ 14.763337] #0: ffff9e7086096e60 (nlk_cb_mutex-ROUTE){+.+.}-{3:3}, at: __netlink_dump_start+0x8a/0x290 [ 14.763841] #1: ffffffff8c37b8c0 (rcu_read_lock){....}-{1:2}, at: inet_dump_fib+0x7a/0x3a0 [ 14.764292] [ 14.764292] stack backtrace: [ 14.764529] CPU: 2 PID: 1107 Comm: ip Not tainted 6.8.0-rc4-virtme #1 [ 14.764872] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org 04/01/2014 [ 14.765498] Call Trace: [ 14.765636] [ 14.765755] dump_stack_lvl+0x66/0x80 [ 14.765958] lockdep_rcu_suspicious+0x158/0x1c0 [ 14.766206] fib_dump_info+0x775/0x880 [ 14.766413] DETECTED CRASH, lowering timeout fib_table_dump+0x2dd/0x310 [ 14.766633] inet_dump_fib+0x326/0x3a0 [ 14.766840] netlink_dump+0x1bb/0x480 [ 14.767047] __netlink_dump_start+0x1e4/0x290 [ 14.767306] rtnetlink_rcv_msg+0x54b/0x6e0 [ 14.767532] ? __pfx_inet_dump_fib+0x10/0x10 [ 14.767761] ? __pfx_inet_dump_fib+0x10/0x10 [ 14.767994] ? __pfx_rtnetlink_rcv_msg+0x10/0x10 [ 14.768243] netlink_rcv_skb+0x58/0x110 [ 14.768456] netlink_unicast+0x1ac/0x280 [ 14.768669] netlink_sendmsg+0x1e8/0x410 [ 14.768882] __sys_sendto+0x1c9/0x1f0 [ 14.769086] ? find_held_lock+0x2b/0x80 [ 14.769295] ? do_user_addr_fault+0x394/0x830 [ 14.769530] ? lock_release+0xbe/0x270 [ 14.769735] ? do_user_addr_fault+0x399/0x830 [ 14.769972] __x64_sys_sendto+0x24/0x30 [ 14.770178] do_syscall_64+0xc9/0x1e0 [ 14.770379] entry_SYSCALL_64_after_hwframe+0x6f/0x77 [ 14.770649] RIP: 0033:0x7f25646d8700 [ 14.770844] Code: ff ff 64 89 02 eb bd 0f 1f 00 f3 0f 1e fa 41 89 ca 64 8b 04 25 18 00 00 00 85 c0 75 1d 45 31 c9 45 31 c0 b8 2c 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 68 c3 0f 1f 80 00 00 00 00 41 54 48 83 ec 20 [ 14.771831] RSP: 002b:00007ffea4f40ec8 EFLAGS: 00000246 ORIG_RAX: 000000000000002c [ 14.772231] RAX: ffffffffffffffda RBX: 0000000000495540 RCX: 00007f25646d8700 [ 14.772608] RDX: 000000000000009c RSI: 00007ffea4f40ed0 RDI: 0000000000000005 [ 14.772983] RBP: 00007ffea4f40ed0 R08: 0000000000000000 R09: 0000000000000000 [ 14.773363] R10: 0000000000000000 R11: 0000000000000246 R12: 00007ffea4f411d8 [ 14.773737] R13: 0000000000000001 R14: 0000000000000001 R15: 00007ffea4f411e0 [ 14.774117] # TEST: IPv4 route with IPv6 gateway [ OK ] # TEST: IPv4 route with invalid IPv6 gateway [ OK ] # # IPv4 functional runtime # ----------------------- # TEST: Route add [ OK ] # TEST: Route delete [ OK ] # TEST: Route add - scope conflict with nexthop [ OK ] # TEST: Nexthop replace with invalid scope for existing route [ OK ] # TEST: IPv4 route with invalid metric [ OK ] # TEST: Basic ping [ OK ] # TEST: Ping - multipath [ OK ] # TEST: Ping - multiple default routes, nh first [ OK ] # TEST: Ping - multiple default routes, nh second [ OK ] # TEST: Ping - blackhole [ OK ] # TEST: Ping - blackhole replaced with gateway [ OK ] # TEST: Ping - gateway replaced by blackhole [ OK ] # TEST: Ping - group with blackhole [ OK ] # TEST: Ping - group blackhole replaced with gateways [ OK ] # TEST: IPv4 route with device only nexthop [ OK ] # TEST: IPv4 multipath route with nexthop mix - dev only + gw [ OK ] # TEST: IPv6 nexthop with IPv4 route [ OK ] # TEST: IPv4 route with mixed v4-v6 multipath route [ OK ] # TEST: IPv6 nexthop with IPv4 route [ OK ] # TEST: IPv4 route with IPv6 gateway [ OK ] # TEST: IPv4 default route with IPv6 gateway [ OK ] # TEST: IPv4 route with MPLS encap [ OK ] # TEST: IPv4 route with MPLS encap - check [ OK ] # TEST: IPv4 route with MPLS encap and v6 gateway [ OK ] # TEST: IPv4 route with MPLS encap, v6 gw - check [ OK ] # # IPv4 large groups (x32) # --------------------- # TEST: Dump large (x32) ecmp groups [ OK ] # # IPv4 large resilient group (128k buckets) # ----------------------------------------- # TEST: Dump large (x131072) nexthop buckets [ OK ] # # IPv4 nexthop api compat mode # ---------------------------- # TEST: IPv4 default nexthop compat mode check [ OK ] # TEST: IPv4 compat mode on - route add notification [ OK ] # TEST: IPv4 compat mode on - route dump [ OK ] # TEST: IPv4 compat mode on - nexthop change [ OK ] # TEST: IPv4 set compat mode - 0 [ OK ] # TEST: IPv4 compat mode off - route add notification [ OK ] # TEST: IPv4 compat mode off - route dump [ OK ] # TEST: IPv4 compat mode off - nexthop change [ OK ] # TEST: IPv4 compat mode off - nexthop delete [ OK ] # TEST: IPv4 set compat mode - 1 [ OK ] # # IPv4 fdb groups functional # -------------------------- # TEST: Fdb Nexthop group with multiple nexthops [ OK ] # TEST: Get Fdb nexthop group by id [ OK ] # TEST: Fdb Nexthop group with non-fdb nexthops [ OK ] # TEST: Non-Fdb Nexthop group with fdb nexthops [ OK ] # TEST: Fdb Nexthop with blackhole [ OK ] # TEST: Fdb Nexthop with oif [ OK ] # TEST: Fdb Nexthop with onlink [ OK ] # TEST: Fdb Nexthop with encap [ OK ] # TEST: Fdb mac add with nexthop group [ OK ] # TEST: Fdb mac add with nexthop [ OK ] # TEST: Route add with fdb nexthop [ OK ] # TEST: Route add with fdb nexthop group [ OK ] # TEST: Fdb entry after deleting a single nexthop [ OK ] # TEST: Fdb nexthop delete [ OK ] # TEST: Fdb entry after deleting a nexthop group [ OK ] # # IPv4 multipath selection # ------------------------ # TEST: Use valid neighbor during multipath selection [ OK ] # TEST: Multipath selection with no valid neighbor [ OK ] # # IPv4 runtime torture # -------------------- # TEST: IPv4 torture test [ OK ] # # IPv4 runtime resilient nexthop group torture # -------------------------------------------- # TEST: IPv4 resilient nexthop group torture test [ OK ] # # IPv6 # ---------------------- # TEST: Create nexthop with id, gw, dev [ OK ] # TEST: Get nexthop by id [ OK ] # TEST: Delete nexthop by id [ OK ] # TEST: Create nexthop - gw only [ OK ] # TEST: Create nexthop - invalid gw+dev combination [ OK ] # TEST: Create nexthop - gw+dev and onlink [ OK ] # TEST: Nexthops removed on admin down [ OK ] # # IPv6 groups functional # ---------------------- # TEST: Create nexthop group with single nexthop [ OK ] # TEST: Get nexthop group by id [ OK ] # TEST: Delete nexthop group by id [ OK ] # TEST: Nexthop group with multiple nexthops [ OK ] # TEST: Nexthop group updated when entry is deleted [ OK ] # TEST: Nexthop group with weighted nexthops [ OK ] # TEST: Weighted nexthop group updated when entry is deleted [ OK ] # TEST: Nexthops in groups removed on admin down [ OK ] # TEST: Multiple groups with same nexthop [ OK ] # TEST: Nexthops in group removed on admin down - mixed group [ OK ] # TEST: Nexthop group can not have a group as an entry [ OK ] # TEST: Nexthop group with a blackhole entry [ OK ] # TEST: Nexthop group can not have a blackhole and another nexthop [ OK ] # TEST: Nexthop group replace refcounts [ OK ] # # IPv6 resilient groups functional # -------------------------------- # TEST: Nexthop group updated when entry is deleted [ OK ] # TEST: Nexthop buckets updated when entry is deleted [ OK ] # TEST: Nexthop group updated after replace [ OK ] # TEST: Nexthop buckets updated after replace [ OK ] # TEST: Nexthop group updated when entry is deleted - nECMP [ OK ] # TEST: Nexthop buckets updated when entry is deleted - nECMP [ OK ] # TEST: Nexthop group updated after replace - nECMP [ OK ] # TEST: Nexthop buckets updated after replace - nECMP [ OK ] # # IPv6 functional runtime # ----------------------- # TEST: Route add [ OK ] # TEST: Route delete [ OK ] # TEST: Ping with nexthop [ OK ] # TEST: Ping - multipath [ OK ] # TEST: Ping - blackhole [ OK ] # TEST: Ping - blackhole replaced with gateway [ OK ] # TEST: Ping - gateway replaced by blackhole [ OK ] # TEST: Ping - group with blackhole [ OK ] # TEST: Ping - group blackhole replaced with gateways [ OK ] # TEST: IPv6 route with device only nexthop [ OK ] # TEST: IPv6 multipath route with nexthop mix - dev only + gw [ OK ] # TEST: IPv6 route can not have a v4 gateway [ OK ] # TEST: Nexthop replace - v6 route, v4 nexthop [ OK ] # TEST: Nexthop replace of group entry - v6 route, v4 nexthop [ OK ] # TEST: IPv6 route can not have a group with v4 and v6 gateways [ OK ] # TEST: IPv6 route can not have a group with v4 and v6 gateways [ OK ] # TEST: IPv6 route using a group after removing v4 gateways [ OK ] # TEST: IPv6 route can not have a group with v4 and v6 gateways [ OK ] # TEST: IPv6 route can not have a group with v4 and v6 gateways [ OK ] # TEST: IPv6 route using a group after replacing v4 gateways [ OK ] # TEST: IPv6 route can not use src routing with external nexthop [ OK ] # TEST: IPv6 route with invalid metric [ OK ] # TEST: Nexthop with default route and rpfilter [ OK ] # TEST: Nexthop with multipath default route and rpfilter [ OK ] # # IPv6 large groups (x32) # --------------------- # TEST: Dump large (x32) ecmp groups [ OK ] # # IPv6 large resilient group (128k buckets) # ----------------------------------------- # TEST: Dump large (x131072) nexthop buckets [ OK ] # # IPv6 nexthop api compat mode test # -------------------------------- # TEST: IPv6 default nexthop compat mode check [ OK ] # TEST: IPv6 compat mode on - route add notification [ OK ] # TEST: IPv6 compat mode on - route dump [ OK ] # TEST: IPv6 compat mode on - nexthop change [ OK ] # TEST: IPv6 set compat mode - 0 [ OK ] # TEST: IPv6 compat mode off - route add notification [ OK ] # TEST: IPv6 compat mode off - route dump [ OK ] # TEST: IPv6 compat mode off - nexthop change [ OK ] # TEST: IPv6 compat mode off - nexthop delete [ OK ] # TEST: IPv6 set compat mode - 1 [ OK ] # # IPv6 fdb groups functional # -------------------------- # TEST: Fdb Nexthop group with multiple nexthops [ OK ] # TEST: Get Fdb nexthop group by id [ OK ] # TEST: Fdb Nexthop group with non-fdb nexthops [ OK ] # TEST: Non-Fdb Nexthop group with fdb nexthops [ OK ] # TEST: Fdb Nexthop with blackhole [ OK ] # TEST: Fdb Nexthop with oif [ OK ] # TEST: Fdb Nexthop with onlink [ OK ] # TEST: Fdb Nexthop with encap [ OK ] # TEST: Fdb mac add with nexthop group [ OK ] # TEST: Fdb mac add with nexthop [ OK ] # TEST: Route add with fdb nexthop [ OK ] # TEST: Route add with fdb nexthop group [ OK ] # TEST: Fdb entry after deleting a single nexthop [ OK ] # TEST: Fdb nexthop delete [ OK ] # TEST: Fdb entry after deleting a nexthop group [ OK ] # # IPv6 multipath selection # ------------------------ # TEST: Use valid neighbor during multipath selection [ OK ] # TEST: Multipath selection with no valid neighbor [ OK ] # # IPv6 runtime torture # -------------------- # TEST: IPv6 torture test [ OK ] # # IPv6 runtime resilient nexthop group torture # -------------------------------------------- # TEST: IPv6 resilient nexthop group torture test [ OK ] # # Tests passed: 234 # Tests failed: 0 ok 1 selftests: net: fib_nexthops.sh make[1]: Leaving directory '/home/virtme/testing-1/tools/testing/selftests/net' make: Leaving directory '/home/virtme/testing-1/tools/testing/selftests' xx__-> echo $? 0 xx__->