linux-uconsole/tools/testing/selftests
Alexey Dobriyan b2f5de0334 tools/testing/selftests/proc: test /proc/*/fd a bit (+ PF_KTHREAD is ABI!)
* Test lookup in /proc/self/fd.
  "map_files" lookup story showed that lookup is not that simple.

* Test that all those symlinks open the same file.
  Check with (st_dev, st_info).

* Test that kernel threads do not have anything in their /proc/*/fd/
  directory.

Now this is where things get interesting.

First, kernel threads aren't pinned by /proc/self or equivalent,
thus some "atomicity" is required.

Second, ->comm can contain whitespace and ')'.
No, they are not escaped.

Third, the only reliable way to check if process is kernel thread
appears to be field #9 in /proc/*/stat.

This field is struct task_struct::flags in decimal!
Check is done by testing PF_KTHREAD flags like we do in kernel.

	PF_KTREAD value is a part of userspace ABI !!!

Other methods for determining kernel threadness are not reliable:
* RSS can be 0 if everything is swapped, even while reading
  from /proc/self.

* ->total_vm CAN BE ZERO if process is finishing

	munmap(NULL, whole address space);

* /proc/*/maps and similar files can be empty because unmapping
  everything works. Read returning 0 can't distinguish between
  kernel thread and such suicide process.

Link: http://lkml.kernel.org/r/20180505000414.GA15090@avx2
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2018-06-07 17:34:38 -07:00
..
android selftests: android: ion: return Kselftest Skip code for skipped tests 2018-05-30 15:21:52 -06:00
bpf tools/bpf: add a selftest for bpf_get_current_cgroup_id() helper 2018-06-03 18:22:41 -07:00
breakpoints selftests: breakpoints: return Kselftest Skip code for skipped tests 2018-05-30 15:21:52 -06:00
capabilities License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
cgroup selftests: cgroup/memcontrol: add basic test for socket accounting 2018-05-30 21:28:33 -06:00
cpu-hotplug selftests: cpu-hotplug: return Kselftest Skip code for skipped tests 2018-05-30 15:21:52 -06:00
cpufreq selftests: cpufreq: return Kselftest Skip code for skipped tests 2018-05-30 15:21:52 -06:00
drivers selftests: add test for USB over IP driver 2018-05-31 17:49:48 +02:00
efivarfs selftests: efivarfs: return Kselftest Skip code for skipped tests 2018-05-30 15:21:52 -06:00
exec selftests: exec: return Kselftest Skip code for skipped tests 2018-05-30 15:21:52 -06:00
filesystems selftests: filesystems: return Kselftest Skip code for skipped tests 2018-05-30 15:21:52 -06:00
firmware selftests: firmware: return Kselftest Skip code for skipped tests 2018-05-30 15:21:52 -06:00
ftrace tracing/selftest: Add test to test simple snapshot trigger for trace_marker 2018-06-04 17:28:01 -04:00
futex selftests: futex: delete RUN_TESTS and EMIT_TESTS overrides 2018-05-30 15:21:52 -06:00
gpio selftests: gpio: return Kselftest Skip code for skipped tests 2018-05-30 15:21:52 -06:00
ia64 License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
intel_pstate selftests: intel_pstate: notification about privilege required to run intel_pstate testing script 2018-05-30 21:31:31 -06:00
ipc selftests: ipc: return Kselftest Skip code for skipped tests 2018-05-30 15:21:53 -06:00
kcmp License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
kmod selftests: kmod: return Kselftest Skip code for skipped tests 2018-05-30 15:21:53 -06:00
kvm selftests: kvm: return Kselftest Skip code for skipped tests 2018-05-30 15:29:05 -06:00
lib selftests: lib: fix prime_numbers module search and skip logic 2018-05-30 21:32:55 -06:00
locking selftests: locking: return Kselftest Skip code for skipped tests 2018-05-30 15:29:06 -06:00
media_tests selftests: media_tests: return Kselftest Skip code for skipped tests 2018-05-30 15:29:06 -06:00
membarrier selftests: membarrier: return Kselftest Skip code for skipped tests 2018-05-30 15:29:06 -06:00
memfd selftests: memfd: split regular and hugetlbfs tests 2018-05-30 15:29:06 -06:00
memory-hotplug selftests: memory-hotplug: return Kselftest Skip code for skipped tests 2018-05-30 15:29:06 -06:00
mount selftests: mount: delete RUN_TESTS and EMIT_TESTS overrides 2018-05-30 15:21:52 -06:00
mqueue selftests: mqueue: return Kselftest Skip code for skipped tests 2018-05-30 15:29:06 -06:00
net Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2018-06-06 18:39:49 -07:00
networking/timestamping selftests/txtimestamp: Add more configurable parameters 2018-03-16 15:05:57 -04:00
nsfs tools/testing: Fix trailing semicolon 2018-01-12 11:41:33 -07:00
ntb NTB: ntb_test: Update ntb_perf tests 2018-01-28 22:17:24 -05:00
powerpc selftests/powerpc: Add perf breakpoint test 2018-06-03 21:16:44 +10:00
prctl License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
proc tools/testing/selftests/proc: test /proc/*/fd a bit (+ PF_KTHREAD is ABI!) 2018-06-07 17:34:38 -07:00
pstore selftests: pstore: Adding config fragment CONFIG_PSTORE_RAM=m 2018-02-13 14:09:17 -07:00
ptp posix-timers: Prevent UB from shifting negative signed value 2018-01-04 14:57:10 +01:00
ptrace License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
rcutorture torture: Make kvm-find-errors.sh find build warnings 2018-05-15 10:32:25 -07:00
rtc selftests: rtc: rework rtctest 2018-05-30 15:21:51 -06:00
seccomp seccomp: Add filter flag to opt-out of SSB mitigation 2018-05-05 00:51:44 +02:00
sigaltstack License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
size kselftest: convert get_size to use stricter TAP13 format 2017-06-14 18:23:27 -06:00
splice License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
static_keys License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
sync selftests: sync: missing CFLAGS while compiling 2018-02-13 11:34:51 -07:00
sysctl test_sysctl: fix sysctl.sh by making it executable 2017-08-07 15:13:36 -06:00
tc-testing tc-testing: fixed copy-pasting error in ife tests 2018-05-17 16:31:43 -04:00
timers selftests: move RTC tests to rtc subfolder 2018-05-30 15:21:51 -06:00
uevent selftests: uevent filtering 2018-05-23 15:24:22 -04:00
user License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
vDSO selftest/vDSO: fix O= 2018-02-13 11:35:01 -07:00
vm selftests/vm/run_vmtests: adjust hugetlb size according to nr_cpus 2018-03-09 16:40:01 -08:00
watchdog License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
x86 selftests/x86: Detect -no-pie availability 2018-05-30 15:21:51 -06:00
zram License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
.gitignore
gen_kselftest_tar.sh selftests: gen_kselftest_tar.h: Add SPDX license identifier 2018-01-12 11:44:31 -07:00
kselftest.h selftests: kselftest: change KSFT_SKIP=4 instead of KSFT_PASS 2018-05-30 15:21:52 -06:00
kselftest_harness.h selftests/seccomp: Allow get_metadata to XFAIL 2018-03-21 10:42:46 -06:00
kselftest_install.sh selftests: kselftest_install.sh: Add SPDX license identifier 2018-01-12 11:45:05 -07:00
lib.mk selftests: lib.mk: add test execute bit check to EMIT_TESTS 2018-05-30 15:21:52 -06:00
Makefile selftests: cgroup: add memory controller self-tests 2018-05-30 15:29:06 -06:00