linux/tools/testing/selftests
David Ahern 7c74b0bec9 ipv4: Update fib_select_default to handle nexthop objects
A user reported [0] hitting the WARN_ON in fib_info_nh:

    [ 8633.839816] ------------[ cut here ]------------
    [ 8633.839819] WARNING: CPU: 0 PID: 1719 at include/net/nexthop.h:251 fib_select_path+0x303/0x381
    ...
    [ 8633.839846] RIP: 0010:fib_select_path+0x303/0x381
    ...
    [ 8633.839848] RSP: 0018:ffffb04d407f7d00 EFLAGS: 00010286
    [ 8633.839850] RAX: 0000000000000000 RBX: ffff9460b9897ee8 RCX: 00000000000000fe
    [ 8633.839851] RDX: 0000000000000000 RSI: 00000000ffffffff RDI: 0000000000000000
    [ 8633.839852] RBP: ffff946076049850 R08: 0000000059263a83 R09: ffff9460840e4000
    [ 8633.839853] R10: 0000000000000014 R11: 0000000000000000 R12: ffffb04d407f7dc0
    [ 8633.839854] R13: ffffffffa4ce3240 R14: 0000000000000000 R15: ffff9460b7681f60
    [ 8633.839857] FS:  00007fcac2e02700(0000) GS:ffff9460bdc00000(0000) knlGS:0000000000000000
    [ 8633.839858] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 8633.839859] CR2: 00007f27beb77e28 CR3: 0000000077734000 CR4: 00000000000006f0
    [ 8633.839867] Call Trace:
    [ 8633.839871]  ip_route_output_key_hash_rcu+0x421/0x890
    [ 8633.839873]  ip_route_output_key_hash+0x5e/0x80
    [ 8633.839876]  ip_route_output_flow+0x1a/0x50
    [ 8633.839878]  __ip4_datagram_connect+0x154/0x310
    [ 8633.839880]  ip4_datagram_connect+0x28/0x40
    [ 8633.839882]  __sys_connect+0xd6/0x100
    ...

The WARN_ON is triggered in fib_select_default which is invoked when
there are multiple default routes. Update the function to use
fib_info_nhc and convert the nexthop checks to use fib_nh_common.

Add test case that covers the affected code path.

[0] https://github.com/FRRouting/frr/issues/6089

Fixes: 493ced1ac4 ("ipv4: Allow routes to use nexthop objects")
Signed-off-by: David Ahern <dsahern@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2020-04-22 19:57:39 -07:00
..
android SPDX patches for 5.7-rc1. 2020-04-03 13:12:26 -07:00
arm64 .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
bpf selftests/bpf: Check for correct program attach/detach in xdp_attach test 2020-04-15 13:26:08 +02:00
breakpoints .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
capabilities .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
cgroup SPDX patches for 5.7-rc1. 2020-04-03 13:12:26 -07:00
clone3 SPDX patches for 5.7-rc1. 2020-04-03 13:12:26 -07:00
cpu-hotplug
cpufreq
dmabuf-heaps dma-buf: heaps: Use _IOCTL_ for userspace IOCTL identifier 2019-12-17 21:37:40 +05:30
drivers SPDX patches for 5.7-rc1. 2020-04-03 13:12:26 -07:00
efivarfs .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
exec .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
filesystems kselftest: introduce new epoll test case 2020-04-07 10:43:44 -07:00
firmware selftests: firmware: Add firmware_request_platform tests 2020-03-20 14:54:04 +01:00
ftrace New tracing features: 2020-04-05 10:36:18 -07:00
futex .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
gpio .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
ia64 .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
intel_pstate .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
ipc .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
ir .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
kcmp .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
kexec sefltest/ima: support appended signatures (modsig) 2019-08-29 12:45:30 -04:00
kmod selftests: kmod: test disabling module autoloading 2020-04-10 15:36:22 -07:00
kselftest selftests: settings: tests can be in subsubdirs 2020-01-27 10:49:52 -07:00
kvm SPDX patches for 5.7-rc1. 2020-04-03 13:12:26 -07:00
lib selftests: Move kselftest_module.sh into kselftest/ 2019-11-07 14:46:08 -07:00
livepatch selftests: Install settings files to fix TIMEOUT failures 2020-02-20 08:56:42 -07:00
lkdtm selftest/lkdtm: Use local .gitignore 2020-03-02 08:39:39 -07:00
locking
media_tests .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
membarrier .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
memfd SPDX patches for 5.7-rc1. 2020-04-03 13:12:26 -07:00
memory-hotplug
mount .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
mqueue .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
net ipv4: Update fib_select_default to handle nexthop objects 2020-04-22 19:57:39 -07:00
netfilter selftests: netfilter: add nfqueue test case 2020-03-24 20:00:12 +01:00
nsfs .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
ntb New feature to add support for NTB virtual MSI interrupts, the ability 2019-07-21 09:46:59 -07:00
openat2 .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
pid_namespace selftests: add pid namespace ENOMEM regression test 2020-03-25 13:50:34 +01:00
pidfd threads-v5.7 2020-04-04 10:08:18 -07:00
powerpc powerpc updates for 5.7 #2 2020-04-09 11:01:42 -07:00
prctl .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
proc .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
pstore .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
ptp .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
ptrace SPDX patches for 5.7-rc1. 2020-04-03 13:12:26 -07:00
rcutorture SPDX patches for 5.7-rc1. 2020-04-03 13:12:26 -07:00
resctrl selftests/resctrl: fix spelling mistake "Errror" -> "Error" 2020-03-13 13:29:22 -06:00
rseq .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
rtc .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
safesetid .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
seccomp SPDX patches for 5.7-rc1. 2020-04-03 13:12:26 -07:00
sigaltstack .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
size .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
sparc64 .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
splice .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
static_keys treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
sync .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
sysctl treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
tc-testing tc-testing: remove duplicate code in tdc.py 2020-04-07 18:38:55 -07:00
timens SPDX patches for 5.7-rc1. 2020-04-03 13:12:26 -07:00
timers .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
tmpfs .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
tpm2 Kernel selftests: tpm2: check for tpm support 2020-02-10 18:00:40 -07:00
uevent
user treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
vDSO .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
vm userfaultfd: selftests: add write-protect test 2020-04-07 10:43:40 -07:00
watchdog .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
wireguard SPDX patches for 5.7-rc1. 2020-04-03 13:12:26 -07:00
x86 SPDX patches for 5.7-rc1. 2020-04-03 13:12:26 -07:00
zram docs: blockdev: add it to the admin-guide 2019-07-15 11:03:01 -03:00
.gitignore SPDX patches for 5.7-rc1. 2020-04-03 13:12:26 -07:00
gen_kselftest_tar.sh selftests: gen_kselftest_tar.sh: Do not clobber kselftest/ 2019-11-07 14:43:27 -07:00
kselftest_harness.h selftests/harness: Handle timeouts cleanly 2020-03-26 15:27:52 -06:00
kselftest_install.sh selftests: gen_kselftest_tar.sh: Do not clobber kselftest/ 2019-11-07 14:43:27 -07:00
kselftest_module.h kselftest: Add test module framework header 2019-04-08 16:44:20 -06:00
kselftest.h kselftest: save-and-restore errno to allow for %m formatting 2019-07-30 15:46:48 -06:00
lib.mk linux-kselftest-5.7-rc1 2020-04-01 16:09:12 -07:00
Makefile threads-v5.7 2020-04-04 10:08:18 -07:00