diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2017-09-27 13:51:08 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2017-09-27 13:51:08 -0400 |
| commit | 225d3b67482930ff5a9f49ad307deffd97ce04c1 (patch) | |
| tree | 4f9d3563d566306e7db7c0dac929a8fd7cc0913f | |
| parent | 7031b6412586e0f8543039257f457e183aeb463c (diff) | |
| parent | eefd95e1f3d47b90dc768e9ebc77d390c4f34809 (diff) | |
Merge tag 'linux-kselftest-4.14-rc3-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest
Pull kselftest fixes from Shuah Khan:
"This update consists of:
- fixes to several existing tests
- a test for regression introduced by b9470c27607b ("inet: kill
smallest_size and smallest_port")
- seccomp support for glibc 2.26 siginfo_t.h
- fixes to kselftest framework and tests to run make O=dir use-case
- fixes to silence unnecessary test output to de-clutter test results"
* tag 'linux-kselftest-4.14-rc3-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest: (28 commits)
selftests: timers: set-timer-lat: Fix hang when testing unsupported alarms
selftests: timers: set-timer-lat: fix hang when std out/err are redirected
selftests/memfd: correct run_tests.sh permission
selftests/seccomp: Support glibc 2.26 siginfo_t.h
selftests: futex: Makefile: fix for loops in targets to run silently
selftests: Makefile: fix for loops in targets to run silently
selftests: mqueue: Use full path to run tests from Makefile
selftests: futex: copy sub-dir test scripts for make O=dir run
selftests: lib.mk: copy test scripts and test files for make O=dir run
selftests: sync: kselftest and kselftest-clean fail for make O=dir case
selftests: sync: use TEST_CUSTOM_PROGS instead of TEST_PROGS
selftests: lib.mk: add TEST_CUSTOM_PROGS to allow custom test run/install
selftests: watchdog: fix to use TEST_GEN_PROGS and remove clean
selftests: lib.mk: fix test executable status check to use full path
selftests: Makefile: clear LDFLAGS for make O=dir use-case
selftests: lib.mk: kselftest and kselftest-clean fail for make O=dir case
Makefile: kselftest and kselftest-clean fail for make O=dir case
selftests/net: msg_zerocopy enable build with older kernel headers
selftests: actually run the various net selftests
selftest: add a reuseaddr test
...
21 files changed, 247 insertions, 67 deletions
| @@ -1172,11 +1172,11 @@ headers_check: headers_install | |||
| 1172 | 1172 | ||
| 1173 | PHONY += kselftest | 1173 | PHONY += kselftest |
| 1174 | kselftest: | 1174 | kselftest: |
| 1175 | $(Q)$(MAKE) -C tools/testing/selftests run_tests | 1175 | $(Q)$(MAKE) -C $(srctree)/tools/testing/selftests run_tests |
| 1176 | 1176 | ||
| 1177 | PHONY += kselftest-clean | 1177 | PHONY += kselftest-clean |
| 1178 | kselftest-clean: | 1178 | kselftest-clean: |
| 1179 | $(Q)$(MAKE) -C tools/testing/selftests clean | 1179 | $(Q)$(MAKE) -C $(srctree)/tools/testing/selftests clean |
| 1180 | 1180 | ||
| 1181 | PHONY += kselftest-merge | 1181 | PHONY += kselftest-merge |
| 1182 | kselftest-merge: | 1182 | kselftest-merge: |
diff --git a/tools/testing/selftests/Makefile b/tools/testing/selftests/Makefile index 26ce4f7168be..ff805643b5f7 100644 --- a/tools/testing/selftests/Makefile +++ b/tools/testing/selftests/Makefile | |||
| @@ -52,6 +52,10 @@ override LDFLAGS = | |||
| 52 | override MAKEFLAGS = | 52 | override MAKEFLAGS = |
| 53 | endif | 53 | endif |
| 54 | 54 | ||
| 55 | ifneq ($(KBUILD_SRC),) | ||
| 56 | override LDFLAGS = | ||
| 57 | endif | ||
| 58 | |||
| 55 | BUILD := $(O) | 59 | BUILD := $(O) |
| 56 | ifndef BUILD | 60 | ifndef BUILD |
| 57 | BUILD := $(KBUILD_OUTPUT) | 61 | BUILD := $(KBUILD_OUTPUT) |
| @@ -62,32 +66,32 @@ endif | |||
| 62 | 66 | ||
| 63 | export BUILD | 67 | export BUILD |
| 64 | all: | 68 | all: |
| 65 | for TARGET in $(TARGETS); do \ | 69 | @for TARGET in $(TARGETS); do \ |
| 66 | BUILD_TARGET=$$BUILD/$$TARGET; \ | 70 | BUILD_TARGET=$$BUILD/$$TARGET; \ |
| 67 | mkdir $$BUILD_TARGET -p; \ | 71 | mkdir $$BUILD_TARGET -p; \ |
| 68 | make OUTPUT=$$BUILD_TARGET -C $$TARGET;\ | 72 | make OUTPUT=$$BUILD_TARGET -C $$TARGET;\ |
| 69 | done; | 73 | done; |
| 70 | 74 | ||
| 71 | run_tests: all | 75 | run_tests: all |
| 72 | for TARGET in $(TARGETS); do \ | 76 | @for TARGET in $(TARGETS); do \ |
| 73 | BUILD_TARGET=$$BUILD/$$TARGET; \ | 77 | BUILD_TARGET=$$BUILD/$$TARGET; \ |
| 74 | make OUTPUT=$$BUILD_TARGET -C $$TARGET run_tests;\ | 78 | make OUTPUT=$$BUILD_TARGET -C $$TARGET run_tests;\ |
| 75 | done; | 79 | done; |
| 76 | 80 | ||
| 77 | hotplug: | 81 | hotplug: |
| 78 | for TARGET in $(TARGETS_HOTPLUG); do \ | 82 | @for TARGET in $(TARGETS_HOTPLUG); do \ |
| 79 | BUILD_TARGET=$$BUILD/$$TARGET; \ | 83 | BUILD_TARGET=$$BUILD/$$TARGET; \ |
| 80 | make OUTPUT=$$BUILD_TARGET -C $$TARGET;\ | 84 | make OUTPUT=$$BUILD_TARGET -C $$TARGET;\ |
| 81 | done; | 85 | done; |
| 82 | 86 | ||
| 83 | run_hotplug: hotplug | 87 | run_hotplug: hotplug |
| 84 | for TARGET in $(TARGETS_HOTPLUG); do \ | 88 | @for TARGET in $(TARGETS_HOTPLUG); do \ |
| 85 | BUILD_TARGET=$$BUILD/$$TARGET; \ | 89 | BUILD_TARGET=$$BUILD/$$TARGET; \ |
| 86 | make OUTPUT=$$BUILD_TARGET -C $$TARGET run_full_test;\ | 90 | make OUTPUT=$$BUILD_TARGET -C $$TARGET run_full_test;\ |
| 87 | done; | 91 | done; |
| 88 | 92 | ||
| 89 | clean_hotplug: | 93 | clean_hotplug: |
| 90 | for TARGET in $(TARGETS_HOTPLUG); do \ | 94 | @for TARGET in $(TARGETS_HOTPLUG); do \ |
| 91 | BUILD_TARGET=$$BUILD/$$TARGET; \ | 95 | BUILD_TARGET=$$BUILD/$$TARGET; \ |
| 92 | make OUTPUT=$$BUILD_TARGET -C $$TARGET clean;\ | 96 | make OUTPUT=$$BUILD_TARGET -C $$TARGET clean;\ |
| 93 | done; | 97 | done; |
| @@ -103,7 +107,7 @@ install: | |||
| 103 | ifdef INSTALL_PATH | 107 | ifdef INSTALL_PATH |
| 104 | @# Ask all targets to install their files | 108 | @# Ask all targets to install their files |
| 105 | mkdir -p $(INSTALL_PATH) | 109 | mkdir -p $(INSTALL_PATH) |
| 106 | for TARGET in $(TARGETS); do \ | 110 | @for TARGET in $(TARGETS); do \ |
| 107 | BUILD_TARGET=$$BUILD/$$TARGET; \ | 111 | BUILD_TARGET=$$BUILD/$$TARGET; \ |
| 108 | make OUTPUT=$$BUILD_TARGET -C $$TARGET INSTALL_PATH=$(INSTALL_PATH)/$$TARGET install; \ | 112 | make OUTPUT=$$BUILD_TARGET -C $$TARGET INSTALL_PATH=$(INSTALL_PATH)/$$TARGET install; \ |
| 109 | done; | 113 | done; |
| @@ -128,7 +132,7 @@ else | |||
| 128 | endif | 132 | endif |
| 129 | 133 | ||
| 130 | clean: | 134 | clean: |
| 131 | for TARGET in $(TARGETS); do \ | 135 | @for TARGET in $(TARGETS); do \ |
| 132 | BUILD_TARGET=$$BUILD/$$TARGET; \ | 136 | BUILD_TARGET=$$BUILD/$$TARGET; \ |
| 133 | make OUTPUT=$$BUILD_TARGET -C $$TARGET clean;\ | 137 | make OUTPUT=$$BUILD_TARGET -C $$TARGET clean;\ |
| 134 | done; | 138 | done; |
diff --git a/tools/testing/selftests/bpf/bpf_util.h b/tools/testing/selftests/bpf/bpf_util.h index 20ecbaa0d85d..6c53a8906eff 100644 --- a/tools/testing/selftests/bpf/bpf_util.h +++ b/tools/testing/selftests/bpf/bpf_util.h | |||
| @@ -12,6 +12,7 @@ static inline unsigned int bpf_num_possible_cpus(void) | |||
| 12 | unsigned int start, end, possible_cpus = 0; | 12 | unsigned int start, end, possible_cpus = 0; |
| 13 | char buff[128]; | 13 | char buff[128]; |
| 14 | FILE *fp; | 14 | FILE *fp; |
| 15 | int n; | ||
| 15 | 16 | ||
| 16 | fp = fopen(fcpu, "r"); | 17 | fp = fopen(fcpu, "r"); |
| 17 | if (!fp) { | 18 | if (!fp) { |
| @@ -20,17 +21,17 @@ static inline unsigned int bpf_num_possible_cpus(void) | |||
| 20 | } | 21 | } |
| 21 | 22 | ||
| 22 | while (fgets(buff, sizeof(buff), fp)) { | 23 | while (fgets(buff, sizeof(buff), fp)) { |
| 23 | if (sscanf(buff, "%u-%u", &start, &end) == 2) { | 24 | n = sscanf(buff, "%u-%u", &start, &end); |
| 24 | possible_cpus = start == 0 ? end + 1 : 0; | 25 | if (n == 0) { |
| 25 | break; | 26 | printf("Failed to retrieve # possible CPUs!\n"); |
| 27 | exit(1); | ||
| 28 | } else if (n == 1) { | ||
| 29 | end = start; | ||
| 26 | } | 30 | } |
| 31 | possible_cpus = start == 0 ? end + 1 : 0; | ||
| 32 | break; | ||
| 27 | } | 33 | } |
| 28 | |||
| 29 | fclose(fp); | 34 | fclose(fp); |
| 30 | if (!possible_cpus) { | ||
| 31 | printf("Failed to retrieve # possible CPUs!\n"); | ||
| 32 | exit(1); | ||
| 33 | } | ||
| 34 | 35 | ||
| 35 | return possible_cpus; | 36 | return possible_cpus; |
| 36 | } | 37 | } |
diff --git a/tools/testing/selftests/breakpoints/Makefile b/tools/testing/selftests/breakpoints/Makefile index 6b214b7b10fb..247b0a1899d7 100644 --- a/tools/testing/selftests/breakpoints/Makefile +++ b/tools/testing/selftests/breakpoints/Makefile | |||
| @@ -2,14 +2,14 @@ | |||
| 2 | uname_M := $(shell uname -m 2>/dev/null || echo not) | 2 | uname_M := $(shell uname -m 2>/dev/null || echo not) |
| 3 | ARCH ?= $(shell echo $(uname_M) | sed -e s/i.86/x86/ -e s/x86_64/x86/) | 3 | ARCH ?= $(shell echo $(uname_M) | sed -e s/i.86/x86/ -e s/x86_64/x86/) |
| 4 | 4 | ||
| 5 | TEST_GEN_PROGS := step_after_suspend_test | ||
| 6 | |||
| 5 | ifeq ($(ARCH),x86) | 7 | ifeq ($(ARCH),x86) |
| 6 | TEST_GEN_PROGS := breakpoint_test | 8 | TEST_GEN_PROGS += breakpoint_test |
| 7 | endif | 9 | endif |
| 8 | ifneq (,$(filter $(ARCH),aarch64 arm64)) | 10 | ifneq (,$(filter $(ARCH),aarch64 arm64)) |
| 9 | TEST_GEN_PROGS := breakpoint_test_arm64 | 11 | TEST_GEN_PROGS += breakpoint_test_arm64 |
| 10 | endif | 12 | endif |
| 11 | 13 | ||
| 12 | TEST_GEN_PROGS += step_after_suspend_test | ||
| 13 | |||
| 14 | include ../lib.mk | 14 | include ../lib.mk |
| 15 | 15 | ||
diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/multiple_kprobes.tc b/tools/testing/selftests/ftrace/test.d/kprobe/multiple_kprobes.tc index 2a1cb9908746..a4fd4c851a5b 100644 --- a/tools/testing/selftests/ftrace/test.d/kprobe/multiple_kprobes.tc +++ b/tools/testing/selftests/ftrace/test.d/kprobe/multiple_kprobes.tc | |||
| @@ -1,6 +1,8 @@ | |||
| 1 | #!/bin/sh | 1 | #!/bin/sh |
| 2 | # description: Register/unregister many kprobe events | 2 | # description: Register/unregister many kprobe events |
| 3 | 3 | ||
| 4 | [ -f kprobe_events ] || exit_unsupported # this is configurable | ||
| 5 | |||
| 4 | # ftrace fentry skip size depends on the machine architecture. | 6 | # ftrace fentry skip size depends on the machine architecture. |
| 5 | # Currently HAVE_KPROBES_ON_FTRACE defined on x86 and powerpc64le | 7 | # Currently HAVE_KPROBES_ON_FTRACE defined on x86 and powerpc64le |
| 6 | case `uname -m` in | 8 | case `uname -m` in |
diff --git a/tools/testing/selftests/futex/Makefile b/tools/testing/selftests/futex/Makefile index 7c647f619d63..f0c0369ccb79 100644 --- a/tools/testing/selftests/futex/Makefile +++ b/tools/testing/selftests/futex/Makefile | |||
| @@ -7,14 +7,17 @@ TEST_PROGS := run.sh | |||
| 7 | include ../lib.mk | 7 | include ../lib.mk |
| 8 | 8 | ||
| 9 | all: | 9 | all: |
| 10 | for DIR in $(SUBDIRS); do \ | 10 | @for DIR in $(SUBDIRS); do \ |
| 11 | BUILD_TARGET=$(OUTPUT)/$$DIR; \ | 11 | BUILD_TARGET=$(OUTPUT)/$$DIR; \ |
| 12 | mkdir $$BUILD_TARGET -p; \ | 12 | mkdir $$BUILD_TARGET -p; \ |
| 13 | make OUTPUT=$$BUILD_TARGET -C $$DIR $@;\ | 13 | make OUTPUT=$$BUILD_TARGET -C $$DIR $@;\ |
| 14 | if [ -e $$DIR/$(TEST_PROGS) ]; then | ||
| 15 | rsync -a $$DIR/$(TEST_PROGS) $$BUILD_TARGET/; | ||
| 16 | fi | ||
| 14 | done | 17 | done |
| 15 | 18 | ||
| 16 | override define RUN_TESTS | 19 | override define RUN_TESTS |
| 17 | $(OUTPUT)/run.sh | 20 | @cd $(OUTPUT); ./run.sh |
| 18 | endef | 21 | endef |
| 19 | 22 | ||
| 20 | override define INSTALL_RULE | 23 | override define INSTALL_RULE |
| @@ -33,7 +36,7 @@ override define EMIT_TESTS | |||
| 33 | endef | 36 | endef |
| 34 | 37 | ||
| 35 | override define CLEAN | 38 | override define CLEAN |
| 36 | for DIR in $(SUBDIRS); do \ | 39 | @for DIR in $(SUBDIRS); do \ |
| 37 | BUILD_TARGET=$(OUTPUT)/$$DIR; \ | 40 | BUILD_TARGET=$(OUTPUT)/$$DIR; \ |
| 38 | mkdir $$BUILD_TARGET -p; \ | 41 | mkdir $$BUILD_TARGET -p; \ |
| 39 | make OUTPUT=$$BUILD_TARGET -C $$DIR $@;\ | 42 | make OUTPUT=$$BUILD_TARGET -C $$DIR $@;\ |
diff --git a/tools/testing/selftests/intel_pstate/Makefile b/tools/testing/selftests/intel_pstate/Makefile index 849a90ffe8dd..a97e24edde39 100644 --- a/tools/testing/selftests/intel_pstate/Makefile +++ b/tools/testing/selftests/intel_pstate/Makefile | |||
| @@ -1,7 +1,9 @@ | |||
| 1 | CFLAGS := $(CFLAGS) -Wall -D_GNU_SOURCE | 1 | CFLAGS := $(CFLAGS) -Wall -D_GNU_SOURCE |
| 2 | LDLIBS := $(LDLIBS) -lm | 2 | LDLIBS := $(LDLIBS) -lm |
| 3 | 3 | ||
| 4 | ifeq (,$(filter $(ARCH),x86)) | ||
| 4 | TEST_GEN_FILES := msr aperf | 5 | TEST_GEN_FILES := msr aperf |
| 6 | endif | ||
| 5 | 7 | ||
| 6 | TEST_PROGS := run.sh | 8 | TEST_PROGS := run.sh |
| 7 | 9 | ||
diff --git a/tools/testing/selftests/intel_pstate/run.sh b/tools/testing/selftests/intel_pstate/run.sh index 7868c106b8b1..d3ab48f91cd6 100755 --- a/tools/testing/selftests/intel_pstate/run.sh +++ b/tools/testing/selftests/intel_pstate/run.sh | |||
| @@ -29,13 +29,12 @@ | |||
| 29 | 29 | ||
| 30 | EVALUATE_ONLY=0 | 30 | EVALUATE_ONLY=0 |
| 31 | 31 | ||
| 32 | max_cpus=$(($(nproc)-1)) | 32 | if ! uname -m | sed -e s/i.86/x86/ -e s/x86_64/x86/ | grep -q x86; then |
| 33 | echo "$0 # Skipped: Test can only run on x86 architectures." | ||
| 34 | exit 0 | ||
| 35 | fi | ||
| 33 | 36 | ||
| 34 | # compile programs | 37 | max_cpus=$(($(nproc)-1)) |
| 35 | gcc aperf.c -Wall -D_GNU_SOURCE -o aperf -lm | ||
| 36 | [ $? -ne 0 ] && echo "Problem compiling aperf.c." && exit 1 | ||
| 37 | gcc -o msr msr.c -lm | ||
| 38 | [ $? -ne 0 ] && echo "Problem compiling msr.c." && exit 1 | ||
| 39 | 38 | ||
| 40 | function run_test () { | 39 | function run_test () { |
| 41 | 40 | ||
diff --git a/tools/testing/selftests/lib.mk b/tools/testing/selftests/lib.mk index 693616651da5..f65886af7c0c 100644 --- a/tools/testing/selftests/lib.mk +++ b/tools/testing/selftests/lib.mk | |||
| @@ -6,7 +6,14 @@ ifeq (0,$(MAKELEVEL)) | |||
| 6 | OUTPUT := $(shell pwd) | 6 | OUTPUT := $(shell pwd) |
| 7 | endif | 7 | endif |
| 8 | 8 | ||
| 9 | # The following are built by lib.mk common compile rules. | ||
| 10 | # TEST_CUSTOM_PROGS should be used by tests that require | ||
| 11 | # custom build rule and prevent common build rule use. | ||
| 12 | # TEST_PROGS are for test shell scripts. | ||
| 13 | # TEST_CUSTOM_PROGS and TEST_PROGS will be run by common run_tests | ||
| 14 | # and install targets. Common clean doesn't touch them. | ||
| 9 | TEST_GEN_PROGS := $(patsubst %,$(OUTPUT)/%,$(TEST_GEN_PROGS)) | 15 | TEST_GEN_PROGS := $(patsubst %,$(OUTPUT)/%,$(TEST_GEN_PROGS)) |
| 16 | TEST_GEN_PROGS_EXTENDED := $(patsubst %,$(OUTPUT)/%,$(TEST_GEN_PROGS_EXTENDED)) | ||
| 10 | TEST_GEN_FILES := $(patsubst %,$(OUTPUT)/%,$(TEST_GEN_FILES)) | 17 | TEST_GEN_FILES := $(patsubst %,$(OUTPUT)/%,$(TEST_GEN_FILES)) |
| 11 | 18 | ||
| 12 | all: $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES) | 19 | all: $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES) |
| @@ -20,17 +27,28 @@ define RUN_TESTS | |||
| 20 | test_num=`echo $$test_num+1 | bc`; \ | 27 | test_num=`echo $$test_num+1 | bc`; \ |
| 21 | echo "selftests: $$BASENAME_TEST"; \ | 28 | echo "selftests: $$BASENAME_TEST"; \ |
| 22 | echo "========================================"; \ | 29 | echo "========================================"; \ |
| 23 | if [ ! -x $$BASENAME_TEST ]; then \ | 30 | if [ ! -x $$TEST ]; then \ |
| 24 | echo "selftests: Warning: file $$BASENAME_TEST is not executable, correct this.";\ | 31 | echo "selftests: Warning: file $$BASENAME_TEST is not executable, correct this.";\ |
| 25 | echo "not ok 1..$$test_num selftests: $$BASENAME_TEST [FAIL]"; \ | 32 | echo "not ok 1..$$test_num selftests: $$BASENAME_TEST [FAIL]"; \ |
| 26 | else \ | 33 | else \ |
| 27 | cd `dirname $$TEST` > /dev/null; (./$$BASENAME_TEST && echo "ok 1..$$test_num selftests: $$BASENAME_TEST [PASS]") || echo "not ok 1..$$test_num selftests: $$BASENAME_TEST [FAIL]"; cd - > /dev/null;\ | 34 | cd `dirname $$TEST` > /dev/null; (./$$BASENAME_TEST > /tmp/$$BASENAME_TEST 2>&1 && echo "ok 1..$$test_num selftests: $$BASENAME_TEST [PASS]") || echo "not ok 1..$$test_num selftests: $$BASENAME_TEST [FAIL]"; cd - > /dev/null;\ |
| 28 | fi; \ | 35 | fi; \ |
| 29 | done; | 36 | done; |
| 30 | endef | 37 | endef |
| 31 | 38 | ||
| 32 | run_tests: all | 39 | run_tests: all |
| 33 | $(call RUN_TESTS, $(TEST_GEN_PROGS) $(TEST_PROGS)) | 40 | ifneq ($(KBUILD_SRC),) |
| 41 | @if [ "X$(TEST_PROGS) $(TEST_PROGS_EXTENDED) $(TEST_FILES)" != "X" ]; then | ||
| 42 | @rsync -aq $(TEST_PROGS) $(TEST_PROGS_EXTENDED) $(TEST_FILES) $(OUTPUT) | ||
| 43 | fi | ||
| 44 | @if [ "X$(TEST_PROGS)" != "X" ]; then | ||
| 45 | $(call RUN_TESTS, $(TEST_GEN_PROGS) $(TEST_CUSTOM_PROGS) $(OUTPUT)/$(TEST_PROGS)) | ||
| 46 | else | ||
| 47 | $(call RUN_TESTS, $(TEST_GEN_PROGS) $(TEST_CUSTOM_PROGS)) | ||
| 48 | fi | ||
| 49 | else | ||
| 50 | $(call RUN_TESTS, $(TEST_GEN_PROGS) $(TEST_CUSTOM_PROGS) $(TEST_PROGS)) | ||
| 51 | endif | ||
| 34 | 52 | ||
| 35 | define INSTALL_RULE | 53 | define INSTALL_RULE |
| 36 | @if [ "X$(TEST_PROGS)$(TEST_PROGS_EXTENDED)$(TEST_FILES)" != "X" ]; then \ | 54 | @if [ "X$(TEST_PROGS)$(TEST_PROGS_EXTENDED)$(TEST_FILES)" != "X" ]; then \ |
| @@ -38,10 +56,10 @@ define INSTALL_RULE | |||
| 38 | echo "rsync -a $(TEST_PROGS) $(TEST_PROGS_EXTENDED) $(TEST_FILES) $(INSTALL_PATH)/"; \ | 56 | echo "rsync -a $(TEST_PROGS) $(TEST_PROGS_EXTENDED) $(TEST_FILES) $(INSTALL_PATH)/"; \ |
| 39 | rsync -a $(TEST_PROGS) $(TEST_PROGS_EXTENDED) $(TEST_FILES) $(INSTALL_PATH)/; \ | 57 | rsync -a $(TEST_PROGS) $(TEST_PROGS_EXTENDED) $(TEST_FILES) $(INSTALL_PATH)/; \ |
| 40 | fi | 58 | fi |
| 41 | @if [ "X$(TEST_GEN_PROGS)$(TEST_GEN_PROGS_EXTENDED)$(TEST_GEN_FILES)" != "X" ]; then \ | 59 | @if [ "X$(TEST_GEN_PROGS)$(TEST_CUSTOM_PROGS)$(TEST_GEN_PROGS_EXTENDED)$(TEST_GEN_FILES)" != "X" ]; then \ |
| 42 | mkdir -p ${INSTALL_PATH}; \ | 60 | mkdir -p ${INSTALL_PATH}; \ |
| 43 | echo "rsync -a $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES) $(INSTALL_PATH)/"; \ | 61 | echo "rsync -a $(TEST_GEN_PROGS) $(TEST_CUSTOM_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES) $(INSTALL_PATH)/"; \ |
| 44 | rsync -a $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES) $(INSTALL_PATH)/; \ | 62 | rsync -a $(TEST_GEN_PROGS) $(TEST_CUSTOM_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES) $(INSTALL_PATH)/; \ |
| 45 | fi | 63 | fi |
| 46 | endef | 64 | endef |
| 47 | 65 | ||
| @@ -53,15 +71,20 @@ else | |||
| 53 | endif | 71 | endif |
| 54 | 72 | ||
| 55 | define EMIT_TESTS | 73 | define EMIT_TESTS |
| 56 | @for TEST in $(TEST_GEN_PROGS) $(TEST_PROGS); do \ | 74 | @for TEST in $(TEST_GEN_PROGS) $(TEST_CUSTOM_PROGS) $(TEST_PROGS); do \ |
| 57 | BASENAME_TEST=`basename $$TEST`; \ | 75 | BASENAME_TEST=`basename $$TEST`; \ |
| 58 | echo "(./$$BASENAME_TEST && echo \"selftests: $$BASENAME_TEST [PASS]\") || echo \"selftests: $$BASENAME_TEST [FAIL]\""; \ | 76 | echo "(./$$BASENAME_TEST > /tmp/$$BASENAME_TEST 2>&1 && echo \"selftests: $$BASENAME_TEST [PASS]\") || echo \"selftests: $$BASENAME_TEST [FAIL]\""; \ |
| 59 | done; | 77 | done; |
| 60 | endef | 78 | endef |
| 61 | 79 | ||
| 62 | emit_tests: | 80 | emit_tests: |
| 63 | $(EMIT_TESTS) | 81 | $(EMIT_TESTS) |
| 64 | 82 | ||
| 83 | # define if isn't already. It is undefined in make O= case. | ||
| 84 | ifeq ($(RM),) | ||
| 85 | RM := rm -f | ||
| 86 | endif | ||
| 87 | |||
| 65 | define CLEAN | 88 | define CLEAN |
| 66 | $(RM) -r $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES) $(EXTRA_CLEAN) | 89 | $(RM) -r $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES) $(EXTRA_CLEAN) |
| 67 | endef | 90 | endef |
| @@ -69,6 +92,15 @@ endef | |||
| 69 | clean: | 92 | clean: |
| 70 | $(CLEAN) | 93 | $(CLEAN) |
| 71 | 94 | ||
| 95 | # When make O= with kselftest target from main level | ||
| 96 | # the following aren't defined. | ||
| 97 | # | ||
| 98 | ifneq ($(KBUILD_SRC),) | ||
| 99 | LINK.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH) | ||
| 100 | COMPILE.S = $(CC) $(ASFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c | ||
| 101 | LINK.S = $(CC) $(ASFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH) | ||
| 102 | endif | ||
| 103 | |||
| 72 | $(OUTPUT)/%:%.c | 104 | $(OUTPUT)/%:%.c |
| 73 | $(LINK.c) $^ $(LDLIBS) -o $@ | 105 | $(LINK.c) $^ $(LDLIBS) -o $@ |
| 74 | 106 | ||
diff --git a/tools/testing/selftests/memfd/run_tests.sh b/tools/testing/selftests/memfd/run_tests.sh index daabb350697c..daabb350697c 100644..100755 --- a/tools/testing/selftests/memfd/run_tests.sh +++ b/tools/testing/selftests/memfd/run_tests.sh | |||
diff --git a/tools/testing/selftests/mqueue/Makefile b/tools/testing/selftests/mqueue/Makefile index 79a664aeb8d7..0f5e347b068d 100644 --- a/tools/testing/selftests/mqueue/Makefile +++ b/tools/testing/selftests/mqueue/Makefile | |||
| @@ -5,8 +5,8 @@ TEST_GEN_PROGS := mq_open_tests mq_perf_tests | |||
| 5 | include ../lib.mk | 5 | include ../lib.mk |
| 6 | 6 | ||
| 7 | override define RUN_TESTS | 7 | override define RUN_TESTS |
| 8 | @./mq_open_tests /test1 || echo "selftests: mq_open_tests [FAIL]" | 8 | $(OUTPUT)/mq_open_tests /test1 || echo "selftests: mq_open_tests [FAIL]" |
| 9 | @./mq_perf_tests || echo "selftests: mq_perf_tests [FAIL]" | 9 | $(OUTPUT)//mq_perf_tests || echo "selftests: mq_perf_tests [FAIL]" |
| 10 | endef | 10 | endef |
| 11 | 11 | ||
| 12 | override define EMIT_TESTS | 12 | override define EMIT_TESTS |
diff --git a/tools/testing/selftests/net/.gitignore b/tools/testing/selftests/net/.gitignore index 9801253e4802..c612d6e38c62 100644 --- a/tools/testing/selftests/net/.gitignore +++ b/tools/testing/selftests/net/.gitignore | |||
| @@ -6,3 +6,4 @@ reuseport_bpf | |||
| 6 | reuseport_bpf_cpu | 6 | reuseport_bpf_cpu |
| 7 | reuseport_bpf_numa | 7 | reuseport_bpf_numa |
| 8 | reuseport_dualstack | 8 | reuseport_dualstack |
| 9 | reuseaddr_conflict | ||
diff --git a/tools/testing/selftests/net/Makefile b/tools/testing/selftests/net/Makefile index de1f5772b878..d86bca991f45 100644 --- a/tools/testing/selftests/net/Makefile +++ b/tools/testing/selftests/net/Makefile | |||
| @@ -5,9 +5,9 @@ CFLAGS += -I../../../../usr/include/ | |||
| 5 | 5 | ||
| 6 | TEST_PROGS := run_netsocktests run_afpackettests test_bpf.sh netdevice.sh rtnetlink.sh | 6 | TEST_PROGS := run_netsocktests run_afpackettests test_bpf.sh netdevice.sh rtnetlink.sh |
| 7 | TEST_GEN_FILES = socket | 7 | TEST_GEN_FILES = socket |
| 8 | TEST_GEN_FILES += psock_fanout psock_tpacket | 8 | TEST_GEN_FILES += psock_fanout psock_tpacket msg_zerocopy |
| 9 | TEST_GEN_FILES += reuseport_bpf reuseport_bpf_cpu reuseport_bpf_numa | 9 | TEST_GEN_PROGS = reuseport_bpf reuseport_bpf_cpu reuseport_bpf_numa |
| 10 | TEST_GEN_FILES += reuseport_dualstack msg_zerocopy | 10 | TEST_GEN_PROGS += reuseport_dualstack reuseaddr_conflict |
| 11 | 11 | ||
| 12 | include ../lib.mk | 12 | include ../lib.mk |
| 13 | 13 | ||
diff --git a/tools/testing/selftests/net/msg_zerocopy.c b/tools/testing/selftests/net/msg_zerocopy.c index 40232af5b023..3ab6ec403905 100644 --- a/tools/testing/selftests/net/msg_zerocopy.c +++ b/tools/testing/selftests/net/msg_zerocopy.c | |||
| @@ -55,7 +55,7 @@ | |||
| 55 | #include <unistd.h> | 55 | #include <unistd.h> |
| 56 | 56 | ||
| 57 | #ifndef SO_EE_ORIGIN_ZEROCOPY | 57 | #ifndef SO_EE_ORIGIN_ZEROCOPY |
| 58 | #define SO_EE_ORIGIN_ZEROCOPY SO_EE_ORIGIN_UPAGE | 58 | #define SO_EE_ORIGIN_ZEROCOPY 5 |
| 59 | #endif | 59 | #endif |
| 60 | 60 | ||
| 61 | #ifndef SO_ZEROCOPY | 61 | #ifndef SO_ZEROCOPY |
diff --git a/tools/testing/selftests/net/netdevice.sh b/tools/testing/selftests/net/netdevice.sh index 4e00568d70c2..90cb903c3381 100755 --- a/tools/testing/selftests/net/netdevice.sh +++ b/tools/testing/selftests/net/netdevice.sh | |||
| @@ -178,7 +178,7 @@ if [ "$(id -u)" -ne 0 ];then | |||
| 178 | exit 0 | 178 | exit 0 |
| 179 | fi | 179 | fi |
| 180 | 180 | ||
| 181 | ip -Version 2>/dev/null >/dev/null | 181 | ip link show 2>/dev/null >/dev/null |
| 182 | if [ $? -ne 0 ];then | 182 | if [ $? -ne 0 ];then |
| 183 | echo "SKIP: Could not run test without the ip tool" | 183 | echo "SKIP: Could not run test without the ip tool" |
| 184 | exit 0 | 184 | exit 0 |
diff --git a/tools/testing/selftests/net/reuseaddr_conflict.c b/tools/testing/selftests/net/reuseaddr_conflict.c new file mode 100644 index 000000000000..7c5b12664b03 --- /dev/null +++ b/tools/testing/selftests/net/reuseaddr_conflict.c | |||
| @@ -0,0 +1,114 @@ | |||
| 1 | /* | ||
| 2 | * Test for the regression introduced by | ||
| 3 | * | ||
| 4 | * b9470c27607b ("inet: kill smallest_size and smallest_port") | ||
| 5 | * | ||
| 6 | * If we open an ipv4 socket on a port with reuseaddr we shouldn't reset the tb | ||
| 7 | * when we open the ipv6 conterpart, which is what was happening previously. | ||
| 8 | */ | ||
| 9 | #include <errno.h> | ||
| 10 | #include <error.h> | ||
| 11 | #include <arpa/inet.h> | ||
| 12 | #include <netinet/in.h> | ||
| 13 | #include <stdbool.h> | ||
| 14 | #include <stdio.h> | ||
| 15 | #include <sys/socket.h> | ||
| 16 | #include <sys/types.h> | ||
| 17 | #include <unistd.h> | ||
| 18 | |||
| 19 | #define PORT 9999 | ||
| 20 | |||
| 21 | int open_port(int ipv6, int any) | ||
| 22 | { | ||
| 23 | int fd = -1; | ||
| 24 | int reuseaddr = 1; | ||
| 25 | int v6only = 1; | ||
| 26 | int addrlen; | ||
| 27 | int ret = -1; | ||
| 28 | struct sockaddr *addr; | ||
| 29 | int family = ipv6 ? AF_INET6 : AF_INET; | ||
| 30 | |||
| 31 | struct sockaddr_in6 addr6 = { | ||
| 32 | .sin6_family = AF_INET6, | ||
| 33 | .sin6_port = htons(PORT), | ||
| 34 | .sin6_addr = in6addr_any | ||
| 35 | }; | ||
| 36 | struct sockaddr_in addr4 = { | ||
| 37 | .sin_family = AF_INET, | ||
| 38 | .sin_port = htons(PORT), | ||
| 39 | .sin_addr.s_addr = any ? htonl(INADDR_ANY) : inet_addr("127.0.0.1"), | ||
| 40 | }; | ||
| 41 | |||
| 42 | |||
| 43 | if (ipv6) { | ||
| 44 | addr = (struct sockaddr*)&addr6; | ||
| 45 | addrlen = sizeof(addr6); | ||
| 46 | } else { | ||
| 47 | addr = (struct sockaddr*)&addr4; | ||
| 48 | addrlen = sizeof(addr4); | ||
| 49 | } | ||
| 50 | |||
| 51 | if ((fd = socket(family, SOCK_STREAM, IPPROTO_TCP)) < 0) { | ||
| 52 | perror("socket"); | ||
| 53 | goto out; | ||
| 54 | } | ||
| 55 | |||
| 56 | if (ipv6 && setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, (void*)&v6only, | ||
| 57 | sizeof(v6only)) < 0) { | ||
| 58 | perror("setsockopt IPV6_V6ONLY"); | ||
| 59 | goto out; | ||
| 60 | } | ||
| 61 | |||
| 62 | if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &reuseaddr, | ||
| 63 | sizeof(reuseaddr)) < 0) { | ||
| 64 | perror("setsockopt SO_REUSEADDR"); | ||
| 65 | goto out; | ||
| 66 | } | ||
| 67 | |||
| 68 | if (bind(fd, addr, addrlen) < 0) { | ||
| 69 | perror("bind"); | ||
| 70 | goto out; | ||
| 71 | } | ||
| 72 | |||
| 73 | if (any) | ||
| 74 | return fd; | ||
| 75 | |||
| 76 | if (listen(fd, 1) < 0) { | ||
| 77 | perror("listen"); | ||
| 78 | goto out; | ||
| 79 | } | ||
| 80 | return fd; | ||
| 81 | out: | ||
| 82 | close(fd); | ||
| 83 | return ret; | ||
| 84 | } | ||
| 85 | |||
| 86 | int main(void) | ||
| 87 | { | ||
| 88 | int listenfd; | ||
| 89 | int fd1, fd2; | ||
| 90 | |||
| 91 | fprintf(stderr, "Opening 127.0.0.1:%d\n", PORT); | ||
| 92 | listenfd = open_port(0, 0); | ||
| 93 | if (listenfd < 0) | ||
| 94 | error(1, errno, "Couldn't open listen socket"); | ||
| 95 | fprintf(stderr, "Opening INADDR_ANY:%d\n", PORT); | ||
| 96 | fd1 = open_port(0, 1); | ||
| 97 | if (fd1 >= 0) | ||
| 98 | error(1, 0, "Was allowed to create an ipv4 reuseport on a already bound non-reuseport socket"); | ||
| 99 | fprintf(stderr, "Opening in6addr_any:%d\n", PORT); | ||
| 100 | fd1 = open_port(1, 1); | ||
| 101 | if (fd1 < 0) | ||
| 102 | error(1, errno, "Couldn't open ipv6 reuseport"); | ||
| 103 | fprintf(stderr, "Opening INADDR_ANY:%d\n", PORT); | ||
| 104 | fd2 = open_port(0, 1); | ||
| 105 | if (fd2 >= 0) | ||
| 106 | error(1, 0, "Was allowed to create an ipv4 reuseport on a already bound non-reuseport socket"); | ||
| 107 | close(fd1); | ||
| 108 | fprintf(stderr, "Opening INADDR_ANY:%d after closing ipv6 socket\n", PORT); | ||
| 109 | fd1 = open_port(0, 1); | ||
| 110 | if (fd1 >= 0) | ||
| 111 | error(1, 0, "Was allowed to create an ipv4 reuseport on an already bound non-reuseport socket with no ipv6"); | ||
| 112 | fprintf(stderr, "Success"); | ||
| 113 | return 0; | ||
| 114 | } | ||
diff --git a/tools/testing/selftests/seccomp/seccomp_bpf.c b/tools/testing/selftests/seccomp/seccomp_bpf.c index 67c3e2764303..24dbf634e2dd 100644 --- a/tools/testing/selftests/seccomp/seccomp_bpf.c +++ b/tools/testing/selftests/seccomp/seccomp_bpf.c | |||
| @@ -6,10 +6,18 @@ | |||
| 6 | */ | 6 | */ |
| 7 | 7 | ||
| 8 | #include <sys/types.h> | 8 | #include <sys/types.h> |
| 9 | #include <asm/siginfo.h> | 9 | |
| 10 | #define __have_siginfo_t 1 | 10 | /* |
| 11 | #define __have_sigval_t 1 | 11 | * glibc 2.26 and later have SIGSYS in siginfo_t. Before that, |
| 12 | #define __have_sigevent_t 1 | 12 | * we need to use the kernel's siginfo.h file and trick glibc |
| 13 | * into accepting it. | ||
| 14 | */ | ||
| 15 | #if !__GLIBC_PREREQ(2, 26) | ||
| 16 | # include <asm/siginfo.h> | ||
| 17 | # define __have_siginfo_t 1 | ||
| 18 | # define __have_sigval_t 1 | ||
| 19 | # define __have_sigevent_t 1 | ||
| 20 | #endif | ||
| 13 | 21 | ||
| 14 | #include <errno.h> | 22 | #include <errno.h> |
| 15 | #include <linux/filter.h> | 23 | #include <linux/filter.h> |
| @@ -884,7 +892,7 @@ TEST_F_SIGNAL(TRAP, ign, SIGSYS) | |||
| 884 | syscall(__NR_getpid); | 892 | syscall(__NR_getpid); |
| 885 | } | 893 | } |
| 886 | 894 | ||
| 887 | static struct siginfo TRAP_info; | 895 | static siginfo_t TRAP_info; |
| 888 | static volatile int TRAP_nr; | 896 | static volatile int TRAP_nr; |
| 889 | static void TRAP_action(int nr, siginfo_t *info, void *void_context) | 897 | static void TRAP_action(int nr, siginfo_t *info, void *void_context) |
| 890 | { | 898 | { |
diff --git a/tools/testing/selftests/sigaltstack/sas.c b/tools/testing/selftests/sigaltstack/sas.c index 7d406c3973ba..97bb150837df 100644 --- a/tools/testing/selftests/sigaltstack/sas.c +++ b/tools/testing/selftests/sigaltstack/sas.c | |||
| @@ -39,7 +39,11 @@ void my_usr1(int sig, siginfo_t *si, void *u) | |||
| 39 | stack_t stk; | 39 | stack_t stk; |
| 40 | struct stk_data *p; | 40 | struct stk_data *p; |
| 41 | 41 | ||
| 42 | #if __s390x__ | ||
| 43 | register unsigned long sp asm("%15"); | ||
| 44 | #else | ||
| 42 | register unsigned long sp asm("sp"); | 45 | register unsigned long sp asm("sp"); |
| 46 | #endif | ||
| 43 | 47 | ||
| 44 | if (sp < (unsigned long)sstack || | 48 | if (sp < (unsigned long)sstack || |
| 45 | sp >= (unsigned long)sstack + SIGSTKSZ) { | 49 | sp >= (unsigned long)sstack + SIGSTKSZ) { |
diff --git a/tools/testing/selftests/sync/Makefile b/tools/testing/selftests/sync/Makefile index 4981c6b6d050..8e04d0afcbd7 100644 --- a/tools/testing/selftests/sync/Makefile +++ b/tools/testing/selftests/sync/Makefile | |||
| @@ -2,12 +2,16 @@ CFLAGS += -O2 -g -std=gnu89 -pthread -Wall -Wextra | |||
| 2 | CFLAGS += -I../../../../usr/include/ | 2 | CFLAGS += -I../../../../usr/include/ |
| 3 | LDFLAGS += -pthread | 3 | LDFLAGS += -pthread |
| 4 | 4 | ||
| 5 | TEST_PROGS = sync_test | 5 | .PHONY: all clean |
| 6 | |||
| 7 | all: $(TEST_PROGS) | ||
| 8 | 6 | ||
| 9 | include ../lib.mk | 7 | include ../lib.mk |
| 10 | 8 | ||
| 9 | # lib.mk TEST_CUSTOM_PROGS var is for custom tests that need special | ||
| 10 | # build rules. lib.mk will run and install them. | ||
| 11 | |||
| 12 | TEST_CUSTOM_PROGS := $(OUTPUT)/sync_test | ||
| 13 | all: $(TEST_CUSTOM_PROGS) | ||
| 14 | |||
| 11 | OBJS = sync_test.o sync.o | 15 | OBJS = sync_test.o sync.o |
| 12 | 16 | ||
| 13 | TESTS += sync_alloc.o | 17 | TESTS += sync_alloc.o |
| @@ -18,6 +22,16 @@ TESTS += sync_stress_parallelism.o | |||
| 18 | TESTS += sync_stress_consumer.o | 22 | TESTS += sync_stress_consumer.o |
| 19 | TESTS += sync_stress_merge.o | 23 | TESTS += sync_stress_merge.o |
| 20 | 24 | ||
| 21 | sync_test: $(OBJS) $(TESTS) | 25 | OBJS := $(patsubst %,$(OUTPUT)/%,$(OBJS)) |
| 26 | TESTS := $(patsubst %,$(OUTPUT)/%,$(TESTS)) | ||
| 27 | |||
| 28 | $(TEST_CUSTOM_PROGS): $(TESTS) $(OBJS) | ||
| 29 | $(CC) -o $(TEST_CUSTOM_PROGS) $(OBJS) $(TESTS) $(CFLAGS) $(LDFLAGS) | ||
| 30 | |||
| 31 | $(OBJS): $(OUTPUT)/%.o: %.c | ||
| 32 | $(CC) -c $^ -o $@ | ||
| 33 | |||
| 34 | $(TESTS): $(OUTPUT)/%.o: %.c | ||
| 35 | $(CC) -c $^ -o $@ | ||
| 22 | 36 | ||
| 23 | EXTRA_CLEAN := sync_test $(OBJS) $(TESTS) | 37 | EXTRA_CLEAN := $(TEST_CUSTOM_PROGS) $(OBJS) $(TESTS) |
diff --git a/tools/testing/selftests/timers/set-timer-lat.c b/tools/testing/selftests/timers/set-timer-lat.c index 9c92b7bd5641..50da45437daa 100644 --- a/tools/testing/selftests/timers/set-timer-lat.c +++ b/tools/testing/selftests/timers/set-timer-lat.c | |||
| @@ -143,7 +143,8 @@ int setup_timer(int clock_id, int flags, int interval, timer_t *tm1) | |||
| 143 | printf("%-22s %s missing CAP_WAKE_ALARM? : [UNSUPPORTED]\n", | 143 | printf("%-22s %s missing CAP_WAKE_ALARM? : [UNSUPPORTED]\n", |
| 144 | clockstring(clock_id), | 144 | clockstring(clock_id), |
| 145 | flags ? "ABSTIME":"RELTIME"); | 145 | flags ? "ABSTIME":"RELTIME"); |
| 146 | return 0; | 146 | /* Indicate timer isn't set, so caller doesn't wait */ |
| 147 | return 1; | ||
| 147 | } | 148 | } |
| 148 | printf("%s - timer_create() failed\n", clockstring(clock_id)); | 149 | printf("%s - timer_create() failed\n", clockstring(clock_id)); |
| 149 | return -1; | 150 | return -1; |
| @@ -213,8 +214,9 @@ int do_timer(int clock_id, int flags) | |||
| 213 | int err; | 214 | int err; |
| 214 | 215 | ||
| 215 | err = setup_timer(clock_id, flags, interval, &tm1); | 216 | err = setup_timer(clock_id, flags, interval, &tm1); |
| 217 | /* Unsupported case - return 0 to not fail the test */ | ||
| 216 | if (err) | 218 | if (err) |
| 217 | return err; | 219 | return err == 1 ? 0 : err; |
| 218 | 220 | ||
| 219 | while (alarmcount < 5) | 221 | while (alarmcount < 5) |
| 220 | sleep(1); | 222 | sleep(1); |
| @@ -228,18 +230,17 @@ int do_timer_oneshot(int clock_id, int flags) | |||
| 228 | timer_t tm1; | 230 | timer_t tm1; |
| 229 | const int interval = 0; | 231 | const int interval = 0; |
| 230 | struct timeval timeout; | 232 | struct timeval timeout; |
| 231 | fd_set fds; | ||
| 232 | int err; | 233 | int err; |
| 233 | 234 | ||
| 234 | err = setup_timer(clock_id, flags, interval, &tm1); | 235 | err = setup_timer(clock_id, flags, interval, &tm1); |
| 236 | /* Unsupported case - return 0 to not fail the test */ | ||
| 235 | if (err) | 237 | if (err) |
| 236 | return err; | 238 | return err == 1 ? 0 : err; |
| 237 | 239 | ||
| 238 | memset(&timeout, 0, sizeof(timeout)); | 240 | memset(&timeout, 0, sizeof(timeout)); |
| 239 | timeout.tv_sec = 5; | 241 | timeout.tv_sec = 5; |
| 240 | FD_ZERO(&fds); | ||
| 241 | do { | 242 | do { |
| 242 | err = select(FD_SETSIZE, &fds, NULL, NULL, &timeout); | 243 | err = select(0, NULL, NULL, NULL, &timeout); |
| 243 | } while (err == -1 && errno == EINTR); | 244 | } while (err == -1 && errno == EINTR); |
| 244 | 245 | ||
| 245 | timer_delete(tm1); | 246 | timer_delete(tm1); |
diff --git a/tools/testing/selftests/watchdog/Makefile b/tools/testing/selftests/watchdog/Makefile index f863c664e3d1..ee068511fd0b 100644 --- a/tools/testing/selftests/watchdog/Makefile +++ b/tools/testing/selftests/watchdog/Makefile | |||
| @@ -1,8 +1,3 @@ | |||
| 1 | TEST_PROGS := watchdog-test | 1 | TEST_GEN_PROGS := watchdog-test |
| 2 | |||
| 3 | all: $(TEST_PROGS) | ||
| 4 | 2 | ||
| 5 | include ../lib.mk | 3 | include ../lib.mk |
| 6 | |||
| 7 | clean: | ||
| 8 | rm -fr $(TEST_PROGS) | ||
