Commit 30ec5682 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'linux-kselftest-4.3-rc2' of...

Merge tag 'linux-kselftest-4.3-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest

Pull kselftest fixes from Shuah Khan:
 "This update contains 7 fixes for problems ranging from build failurs
  to incorrect error reporting"

* tag 'linux-kselftest-4.3-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest:
  selftests: exec: revert to default emit rule
  selftests: change install command to rsync
  selftests: mqueue: simplify the Makefile
  selftests: mqueue: allow extra cflags
  selftests: rename jump label to static_keys
  selftests/seccomp: add support for s390
  seltests/zram: fix syntax error
parents 009884f3 ae785818
...@@ -16,12 +16,12 @@ TARGETS += powerpc ...@@ -16,12 +16,12 @@ TARGETS += powerpc
TARGETS += ptrace TARGETS += ptrace
TARGETS += seccomp TARGETS += seccomp
TARGETS += size TARGETS += size
TARGETS += static_keys
TARGETS += sysctl TARGETS += sysctl
ifneq (1, $(quicktest)) ifneq (1, $(quicktest))
TARGETS += timers TARGETS += timers
endif endif
TARGETS += user TARGETS += user
TARGETS += jumplabel
TARGETS += vm TARGETS += vm
TARGETS += x86 TARGETS += x86
TARGETS += zram TARGETS += zram
......
CFLAGS = -Wall CFLAGS = -Wall
BINARIES = execveat BINARIES = execveat
DEPS = execveat.symlink execveat.denatured script DEPS = execveat.symlink execveat.denatured script subdir
all: $(BINARIES) $(DEPS) all: $(BINARIES) $(DEPS)
subdir: subdir:
...@@ -22,7 +22,5 @@ TEST_FILES := $(DEPS) ...@@ -22,7 +22,5 @@ TEST_FILES := $(DEPS)
include ../lib.mk include ../lib.mk
override EMIT_TESTS := echo "mkdir -p subdir; (./execveat && echo \"selftests: execveat [PASS]\") || echo \"selftests: execveat [FAIL]\""
clean: clean:
rm -rf $(BINARIES) $(DEPS) subdir.moved execveat.moved xxxxx* rm -rf $(BINARIES) $(DEPS) subdir.moved execveat.moved xxxxx*
all: all:
TEST_PROGS := ftracetest TEST_PROGS := ftracetest
TEST_DIRS := test.d/ TEST_DIRS := test.d
include ../lib.mk include ../lib.mk
......
...@@ -12,13 +12,10 @@ run_tests: all ...@@ -12,13 +12,10 @@ run_tests: all
$(RUN_TESTS) $(RUN_TESTS)
define INSTALL_RULE define INSTALL_RULE
@if [ "X$(TEST_PROGS)$(TEST_PROGS_EXTENDED)$(TEST_FILES)" != "X" ]; then \ @if [ "X$(TEST_PROGS)$(TEST_PROGS_EXTENDED)$(TEST_FILES)" != "X" ]; then \
mkdir -p $(INSTALL_PATH); \ mkdir -p ${INSTALL_PATH}; \
for TEST_DIR in $(TEST_DIRS); do \ echo "rsync -a $(TEST_DIRS) $(TEST_PROGS) $(TEST_PROGS_EXTENDED) $(TEST_FILES) $(INSTALL_PATH)/"; \
cp -r $$TEST_DIR $(INSTALL_PATH); \ rsync -a $(TEST_DIRS) $(TEST_PROGS) $(TEST_PROGS_EXTENDED) $(TEST_FILES) $(INSTALL_PATH)/; \
done; \
echo "install -t $(INSTALL_PATH) $(TEST_PROGS) $(TEST_PROGS_EXTENDED) $(TEST_FILES)"; \
install -t $(INSTALL_PATH) $(TEST_PROGS) $(TEST_PROGS_EXTENDED) $(TEST_FILES); \
fi fi
endef endef
......
CFLAGS = -O2 CFLAGS += -O2
LDLIBS = -lrt -lpthread -lpopt
TEST_PROGS := mq_open_tests mq_perf_tests
all: all: $(TEST_PROGS)
$(CC) $(CFLAGS) mq_open_tests.c -o mq_open_tests -lrt
$(CC) $(CFLAGS) -o mq_perf_tests mq_perf_tests.c -lrt -lpthread -lpopt
include ../lib.mk include ../lib.mk
...@@ -11,8 +11,6 @@ override define RUN_TESTS ...@@ -11,8 +11,6 @@ override define RUN_TESTS
@./mq_perf_tests || echo "selftests: mq_perf_tests [FAIL]" @./mq_perf_tests || echo "selftests: mq_perf_tests [FAIL]"
endef endef
TEST_PROGS := mq_open_tests mq_perf_tests
override define EMIT_TESTS override define EMIT_TESTS
echo "./mq_open_tests /test1 || echo \"selftests: mq_open_tests [FAIL]\"" echo "./mq_open_tests /test1 || echo \"selftests: mq_open_tests [FAIL]\""
echo "./mq_perf_tests || echo \"selftests: mq_perf_tests [FAIL]\"" echo "./mq_perf_tests || echo \"selftests: mq_perf_tests [FAIL]\""
......
...@@ -1210,6 +1210,10 @@ TEST_F(TRACE_poke, getpid_runs_normally) ...@@ -1210,6 +1210,10 @@ TEST_F(TRACE_poke, getpid_runs_normally)
# define ARCH_REGS struct pt_regs # define ARCH_REGS struct pt_regs
# define SYSCALL_NUM gpr[0] # define SYSCALL_NUM gpr[0]
# define SYSCALL_RET gpr[3] # define SYSCALL_RET gpr[3]
#elif defined(__s390__)
# define ARCH_REGS s390_regs
# define SYSCALL_NUM gprs[2]
# define SYSCALL_RET gprs[2]
#else #else
# error "Do not know how to find your architecture's registers and syscalls" # error "Do not know how to find your architecture's registers and syscalls"
#endif #endif
...@@ -1243,7 +1247,8 @@ void change_syscall(struct __test_metadata *_metadata, ...@@ -1243,7 +1247,8 @@ void change_syscall(struct __test_metadata *_metadata,
ret = ptrace(PTRACE_GETREGSET, tracee, NT_PRSTATUS, &iov); ret = ptrace(PTRACE_GETREGSET, tracee, NT_PRSTATUS, &iov);
EXPECT_EQ(0, ret); EXPECT_EQ(0, ret);
#if defined(__x86_64__) || defined(__i386__) || defined(__aarch64__) || defined(__powerpc__) #if defined(__x86_64__) || defined(__i386__) || defined(__aarch64__) || \
defined(__powerpc__) || defined(__s390__)
{ {
regs.SYSCALL_NUM = syscall; regs.SYSCALL_NUM = syscall;
} }
...@@ -1281,17 +1286,21 @@ void tracer_syscall(struct __test_metadata *_metadata, pid_t tracee, ...@@ -1281,17 +1286,21 @@ void tracer_syscall(struct __test_metadata *_metadata, pid_t tracee,
ret = ptrace(PTRACE_GETEVENTMSG, tracee, NULL, &msg); ret = ptrace(PTRACE_GETEVENTMSG, tracee, NULL, &msg);
EXPECT_EQ(0, ret); EXPECT_EQ(0, ret);
/* Validate and take action on expected syscalls. */
switch (msg) { switch (msg) {
case 0x1002: case 0x1002:
/* change getpid to getppid. */ /* change getpid to getppid. */
EXPECT_EQ(__NR_getpid, get_syscall(_metadata, tracee));
change_syscall(_metadata, tracee, __NR_getppid); change_syscall(_metadata, tracee, __NR_getppid);
break; break;
case 0x1003: case 0x1003:
/* skip gettid. */ /* skip gettid. */
EXPECT_EQ(__NR_gettid, get_syscall(_metadata, tracee));
change_syscall(_metadata, tracee, -1); change_syscall(_metadata, tracee, -1);
break; break;
case 0x1004: case 0x1004:
/* do nothing (allow getppid) */ /* do nothing (allow getppid) */
EXPECT_EQ(__NR_getppid, get_syscall(_metadata, tracee));
break; break;
default: default:
EXPECT_EQ(0, msg) { EXPECT_EQ(0, msg) {
...@@ -1409,6 +1418,8 @@ TEST_F(TRACE_syscall, syscall_dropped) ...@@ -1409,6 +1418,8 @@ TEST_F(TRACE_syscall, syscall_dropped)
# define __NR_seccomp 277 # define __NR_seccomp 277
# elif defined(__powerpc__) # elif defined(__powerpc__)
# define __NR_seccomp 358 # define __NR_seccomp 358
# elif defined(__s390__)
# define __NR_seccomp 348
# else # else
# warning "seccomp syscall number unknown for this architecture" # warning "seccomp syscall number unknown for this architecture"
# define __NR_seccomp 0xffff # define __NR_seccomp 0xffff
...@@ -1453,6 +1464,9 @@ TEST(seccomp_syscall) ...@@ -1453,6 +1464,9 @@ TEST(seccomp_syscall)
/* Reject insane operation. */ /* Reject insane operation. */
ret = seccomp(-1, 0, &prog); ret = seccomp(-1, 0, &prog);
ASSERT_NE(ENOSYS, errno) {
TH_LOG("Kernel does not support seccomp syscall!");
}
EXPECT_EQ(EINVAL, errno) { EXPECT_EQ(EINVAL, errno) {
TH_LOG("Did not reject crazy op value!"); TH_LOG("Did not reject crazy op value!");
} }
...@@ -1501,6 +1515,9 @@ TEST(seccomp_syscall_mode_lock) ...@@ -1501,6 +1515,9 @@ TEST(seccomp_syscall_mode_lock)
} }
ret = seccomp(SECCOMP_SET_MODE_FILTER, 0, &prog); ret = seccomp(SECCOMP_SET_MODE_FILTER, 0, &prog);
ASSERT_NE(ENOSYS, errno) {
TH_LOG("Kernel does not support seccomp syscall!");
}
EXPECT_EQ(0, ret) { EXPECT_EQ(0, ret) {
TH_LOG("Could not install filter!"); TH_LOG("Could not install filter!");
} }
...@@ -1535,6 +1552,9 @@ TEST(TSYNC_first) ...@@ -1535,6 +1552,9 @@ TEST(TSYNC_first)
ret = seccomp(SECCOMP_SET_MODE_FILTER, SECCOMP_FLAG_FILTER_TSYNC, ret = seccomp(SECCOMP_SET_MODE_FILTER, SECCOMP_FLAG_FILTER_TSYNC,
&prog); &prog);
ASSERT_NE(ENOSYS, errno) {
TH_LOG("Kernel does not support seccomp syscall!");
}
EXPECT_EQ(0, ret) { EXPECT_EQ(0, ret) {
TH_LOG("Could not install initial filter with TSYNC!"); TH_LOG("Could not install initial filter with TSYNC!");
} }
...@@ -1694,6 +1714,9 @@ TEST_F(TSYNC, siblings_fail_prctl) ...@@ -1694,6 +1714,9 @@ TEST_F(TSYNC, siblings_fail_prctl)
/* Check prctl failure detection by requesting sib 0 diverge. */ /* Check prctl failure detection by requesting sib 0 diverge. */
ret = seccomp(SECCOMP_SET_MODE_FILTER, 0, &prog); ret = seccomp(SECCOMP_SET_MODE_FILTER, 0, &prog);
ASSERT_NE(ENOSYS, errno) {
TH_LOG("Kernel does not support seccomp syscall!");
}
ASSERT_EQ(0, ret) { ASSERT_EQ(0, ret) {
TH_LOG("setting filter failed"); TH_LOG("setting filter failed");
} }
...@@ -1731,6 +1754,9 @@ TEST_F(TSYNC, two_siblings_with_ancestor) ...@@ -1731,6 +1754,9 @@ TEST_F(TSYNC, two_siblings_with_ancestor)
} }
ret = seccomp(SECCOMP_SET_MODE_FILTER, 0, &self->root_prog); ret = seccomp(SECCOMP_SET_MODE_FILTER, 0, &self->root_prog);
ASSERT_NE(ENOSYS, errno) {
TH_LOG("Kernel does not support seccomp syscall!");
}
ASSERT_EQ(0, ret) { ASSERT_EQ(0, ret) {
TH_LOG("Kernel does not support SECCOMP_SET_MODE_FILTER!"); TH_LOG("Kernel does not support SECCOMP_SET_MODE_FILTER!");
} }
...@@ -1805,6 +1831,9 @@ TEST_F(TSYNC, two_siblings_with_no_filter) ...@@ -1805,6 +1831,9 @@ TEST_F(TSYNC, two_siblings_with_no_filter)
ret = seccomp(SECCOMP_SET_MODE_FILTER, SECCOMP_FLAG_FILTER_TSYNC, ret = seccomp(SECCOMP_SET_MODE_FILTER, SECCOMP_FLAG_FILTER_TSYNC,
&self->apply_prog); &self->apply_prog);
ASSERT_NE(ENOSYS, errno) {
TH_LOG("Kernel does not support seccomp syscall!");
}
ASSERT_EQ(0, ret) { ASSERT_EQ(0, ret) {
TH_LOG("Could install filter on all threads!"); TH_LOG("Could install filter on all threads!");
} }
...@@ -1833,6 +1862,9 @@ TEST_F(TSYNC, two_siblings_with_one_divergence) ...@@ -1833,6 +1862,9 @@ TEST_F(TSYNC, two_siblings_with_one_divergence)
} }
ret = seccomp(SECCOMP_SET_MODE_FILTER, 0, &self->root_prog); ret = seccomp(SECCOMP_SET_MODE_FILTER, 0, &self->root_prog);
ASSERT_NE(ENOSYS, errno) {
TH_LOG("Kernel does not support seccomp syscall!");
}
ASSERT_EQ(0, ret) { ASSERT_EQ(0, ret) {
TH_LOG("Kernel does not support SECCOMP_SET_MODE_FILTER!"); TH_LOG("Kernel does not support SECCOMP_SET_MODE_FILTER!");
} }
...@@ -1890,6 +1922,9 @@ TEST_F(TSYNC, two_siblings_not_under_filter) ...@@ -1890,6 +1922,9 @@ TEST_F(TSYNC, two_siblings_not_under_filter)
} }
ret = seccomp(SECCOMP_SET_MODE_FILTER, 0, &self->root_prog); ret = seccomp(SECCOMP_SET_MODE_FILTER, 0, &self->root_prog);
ASSERT_NE(ENOSYS, errno) {
TH_LOG("Kernel does not support seccomp syscall!");
}
ASSERT_EQ(0, ret) { ASSERT_EQ(0, ret) {
TH_LOG("Kernel does not support SECCOMP_SET_MODE_FILTER!"); TH_LOG("Kernel does not support SECCOMP_SET_MODE_FILTER!");
} }
......
...@@ -370,11 +370,8 @@ ...@@ -370,11 +370,8 @@
__typeof__(_expected) __exp = (_expected); \ __typeof__(_expected) __exp = (_expected); \
__typeof__(_seen) __seen = (_seen); \ __typeof__(_seen) __seen = (_seen); \
if (!(__exp _t __seen)) { \ if (!(__exp _t __seen)) { \
unsigned long long __exp_print = 0; \ unsigned long long __exp_print = (unsigned long long)__exp; \
unsigned long long __seen_print = 0; \ unsigned long long __seen_print = (unsigned long long)__seen; \
/* Avoid casting complaints the scariest way we can. */ \
memcpy(&__exp_print, &__exp, sizeof(__exp)); \
memcpy(&__seen_print, &__seen, sizeof(__seen)); \
__TH_LOG("Expected %s (%llu) %s %s (%llu)", \ __TH_LOG("Expected %s (%llu) %s %s (%llu)", \
#_expected, __exp_print, #_t, \ #_expected, __exp_print, #_t, \
#_seen, __seen_print); \ #_seen, __seen_print); \
......
#!/bin/bash #!/bin/bash
TCID="zram.sh" TCID="zram.sh"
check_prereqs() . ./zram_lib.sh
{
local msg="skip all tests:"
if [ $UID != 0 ]; then
echo $msg must be run as root >&2
exit 0
fi
}
run_zram () { run_zram () {
echo "--------------------" echo "--------------------"
......
...@@ -23,8 +23,9 @@ trap INT ...@@ -23,8 +23,9 @@ trap INT
check_prereqs() check_prereqs()
{ {
local msg="skip all tests:" local msg="skip all tests:"
local uid=$(id -u)
if [ $UID != 0 ]; then if [ $uid -ne 0 ]; then
echo $msg must be run as root >&2 echo $msg must be run as root >&2
exit 0 exit 0
fi fi
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment