bpf: Fix test_lru_sanity5() in test_lru_map.c
authorMartin KaFai Lau <kafai@fb.com>
Tue, 17 Jan 2017 06:17:29 +0000 (22:17 -0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 17 Jan 2017 20:39:39 +0000 (15:39 -0500)
commit3fbfadce6012e7bb384b2e9ad47869d5177f7209
treec768617d6b7949b5b4bb75c6b2e58b08b4e1f6ea
parentd5ff72d9af73bc3cbaa3edb541333a851f8c7295
bpf: Fix test_lru_sanity5() in test_lru_map.c

test_lru_sanity5() fails when the number of online cpus
is fewer than the number of possible cpus.  It can be
reproduced with qemu by using cmd args "--smp cpus=2,maxcpus=8".

The problem is the loop in test_lru_sanity5() is testing
'i' which is incorrect.

This patch:
1. Make sched_next_online() always return -1 if it cannot
   find a next cpu to schedule the process.
2. In test_lru_sanity5(), the parent process does
   sched_setaffinity() first (through sched_next_online())
   and the forked process will inherit it according to
   the 'man sched_setaffinity'.

Fixes: 5db58faf989f ("bpf: Add tests for the LRU bpf_htab")
Reported-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: Martin KaFai Lau <kafai@fb.com>
Acked-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
tools/testing/selftests/bpf/test_lru_map.c