linux-stable/tools
Li Zhijian bfa4a8690c ksefltests: pidfd: Fix wait_states: Test terminated by timeout
[ Upstream commit 88e1f16ba5 ]

0Day/LKP observed that the kselftest blocks forever since one of the
pidfd_wait doesn't terminate in 1 of 30 runs. After digging into
the source, we found that it blocks at:
ASSERT_EQ(sys_waitid(P_PIDFD, pidfd, &info, WCONTINUED, NULL), 0);

wait_states has below testing flow:
  CHILD                 PARENT
  ---------------+--------------
1 STOP itself
2                   WAIT for CHILD STOPPED
3                   SIGNAL CHILD to CONT
4 CONT
5 STOP itself
5'                  WAIT for CHILD CONT
6                   WAIT for CHILD STOPPED

The problem is that the kernel cannot ensure the order of 5 and 5', once
5 goes first, the test will fail.

we can reproduce it by:
$ while true; do make run_tests -C pidfd; done

Introduce a blocking read in child process to make sure the parent can
check its WCONTINUED.

CC: Philip Li <philip.li@intel.com>
Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Li Zhijian <lizhijian@fujitsu.com>
Reviewed-by: Christian Brauner (Microsoft) <brauner@kernel.org>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2022-11-26 09:27:19 +01:00
..
accounting
arch x86/cpu: Restore AMD's DE_CFG MSR after resume 2022-11-16 10:04:14 +01:00
bootconfig
bpf bpftool: Fix NULL pointer dereference when pin {PROG, MAP, LINK} without FILE 2022-11-16 10:03:51 +01:00
build tools build: Switch to new openssl API for test-libcrypto 2022-08-10 10:44:02 -03:00
certs
cgroup
counter
debugging tools: Add new "test" taint to kernel-chktaint 2022-09-07 14:51:12 -06:00
edid
firewire
firmware
gpio
hv tools: hv: kvp: remove unnecessary (void*) conversions 2022-09-05 16:55:20 +00:00
iio tools: iio: iio_utils: fix digit calculation 2022-11-04 00:00:20 +09:00
include tools/nolibc/string: Fix memcmp() implementation 2022-11-10 18:17:33 +01:00
io_uring
kvm/kvm_stat
laptop
leds
lib libbpf: Fix overrun in netlink attribute iteration 2022-10-21 12:39:11 +02:00
memory-model
objtool objtool: Preserve special st_shndx indexes in elf_update_symbol 2022-10-21 12:38:00 +02:00
pci
pcmcia
perf perf tools: Add the include/perf/ directory to .gitignore 2022-11-16 10:03:59 +01:00
power tools/power turbostat: Use standard Energy Unit for SPR Dram RAPL domain 2022-10-21 12:39:02 +02:00
rcu
scripts
spi
testing ksefltests: pidfd: Fix wait_states: Test terminated by timeout 2022-11-26 09:27:19 +01:00
thermal
time
tracing rtla: Consolidate and show all necessary libraries that failed for building 2022-08-10 12:03:02 -04:00
usb
verification rv/dot2c: Make automaton definition static 2022-10-29 10:08:35 +02:00
virtio virtio_test: fixup for vq reset 2022-09-27 18:30:49 -04:00
vm - The usual batches of cleanups from Baoquan He, Muchun Song, Miaohe 2022-08-05 16:32:45 -07:00
wmi
Makefile