linux-kselftest-next-5.18-rc1
This Kselftest test for Linux 5.18-rc1 consists of several build and cleanup fixes. - removing obsolete config options - removing dependency on internal kernel macros - adding config options - several build fixes related to headers and install paths -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEPZKym/RZuOCGeA/kCwJExA0NQxwFAmI5I5sACgkQCwJExA0N Qxx/Yg/8DkJOZINaZJ+fMjz0jvRc3dGAUxCczliO1ZcuzilBWbAf/D+5cHkroctW w661Sf05b00uyXiUmUVyk/YqfCSVwWWydQjYdhpmV/VumjOVAr4vgu2lo4GUfMJe U+GrleFFCsBcXFU2JLiwl0s31B24P3VlQckSn11NJ/SSWFFkomaDO6bNZI4vZA+R Ue4zXuXhVr1sJQWi5pJTAMz9Ylj8iJ6PYlS25kEIgxqUh1DN8qKp6CIGMSaBOMw7 U0VJV0p22NO2JHmRLJbIENjlvrQJBQChG6g7keuqWH85fLD1x8+qvaiOg15ge69s q2bgUA4SJ5qZsZaCVmSCi7+/JVy9KIhRUJAL0lXzXnrJtuf8fPkofPYwDlSquHxT 3QvUTcEoTakma0W4eZxGD9sB3vRhh1IyHM6fth8pCKRRcygH7SKDqlLMmaxhYZJu ODJRZ/fa/mAbr24bvo+PL2c85D29XXzshj+lmv+2jxGnnhAWaoq3QFrclu1NXq4p gKgzvr/rBY0LGz+BqLbxKKiinu89ZpvEucxfXBuCaR7fhQ6bd+cR0xR5c9jaYaq+ JNhrS+Z1frcZx5qcy/4VvknfcRDzl7089jetHllxstogip0eCKuH5aKmClSV4GK2 fPadnmkMSGft6frCE+e5vRvuPBCL7vdOQPXg+VMf7PUY74ih4X0= =Q6bT -----END PGP SIGNATURE----- Merge tag 'linux-kselftest-next-5.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest Pull Kselftest updates from Shuah Khan: "Several build and cleanup fixes: - removing obsolete config options - removing dependency on internal kernel macros - adding config options - several build fixes related to headers and install paths" * tag 'linux-kselftest-next-5.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest: (22 commits) selftests: Fix build when $(O) points to a relative path selftests: netfilter: fix a build error on openSUSE selftests: kvm: add generated file to the .gitignore selftests/exec: add generated files to .gitignore selftests: add kselftest_install to .gitignore selftests/rtc: continuously read RTC in a loop for 30s selftests/lkdtm: Add UBSAN config selftests/lkdtm: Remove dead config option selftests/exec: Rename file binfmt_script to binfmt_script.py selftests: Use -isystem instead of -I to include headers selftests: vm: remove dependecy from internal kernel macros selftests: vm: Add the uapi headers include variable selftests: mptcp: Add the uapi headers include variable selftests: net: Add the uapi headers include variable selftests: landlock: Add the uapi headers include variable selftests: kvm: Add the uapi headers include variable selftests: futex: Add the uapi headers include variable selftests: Correct the headers install path selftests: Add and export a kernel uapi headers path selftests: set the BUILD variable to absolute path ...
This commit is contained in:
commit
23d1dea555
1
tools/testing/selftests/.gitignore
vendored
1
tools/testing/selftests/.gitignore
vendored
@ -3,6 +3,7 @@ gpiogpio-event-mon
|
||||
gpiogpio-hammer
|
||||
gpioinclude/
|
||||
gpiolsgpio
|
||||
kselftest_install/
|
||||
tpm2/SpaceTest.log
|
||||
|
||||
# Python bytecode and cache
|
||||
|
@ -114,23 +114,35 @@ ifdef building_out_of_srctree
|
||||
override LDFLAGS =
|
||||
endif
|
||||
|
||||
ifneq ($(O),)
|
||||
BUILD := $(O)/kselftest
|
||||
top_srcdir ?= ../../..
|
||||
|
||||
ifeq ("$(origin O)", "command line")
|
||||
KBUILD_OUTPUT := $(O)
|
||||
endif
|
||||
|
||||
ifneq ($(KBUILD_OUTPUT),)
|
||||
# Make's built-in functions such as $(abspath ...), $(realpath ...) cannot
|
||||
# expand a shell special character '~'. We use a somewhat tedious way here.
|
||||
abs_objtree := $(shell cd $(top_srcdir) && mkdir -p $(KBUILD_OUTPUT) && cd $(KBUILD_OUTPUT) && pwd)
|
||||
$(if $(abs_objtree),, \
|
||||
$(error failed to create output directory "$(KBUILD_OUTPUT)"))
|
||||
# $(realpath ...) resolves symlinks
|
||||
abs_objtree := $(realpath $(abs_objtree))
|
||||
BUILD := $(abs_objtree)/kselftest
|
||||
KHDR_INCLUDES := -isystem ${abs_objtree}/usr/include
|
||||
else
|
||||
ifneq ($(KBUILD_OUTPUT),)
|
||||
BUILD := $(KBUILD_OUTPUT)/kselftest
|
||||
else
|
||||
BUILD := $(shell pwd)
|
||||
DEFAULT_INSTALL_HDR_PATH := 1
|
||||
endif
|
||||
BUILD := $(CURDIR)
|
||||
abs_srctree := $(shell cd $(top_srcdir) && pwd)
|
||||
KHDR_INCLUDES := -isystem ${abs_srctree}/usr/include
|
||||
DEFAULT_INSTALL_HDR_PATH := 1
|
||||
endif
|
||||
|
||||
# Prepare for headers install
|
||||
top_srcdir ?= ../../..
|
||||
include $(top_srcdir)/scripts/subarch.include
|
||||
ARCH ?= $(SUBARCH)
|
||||
export KSFT_KHDR_INSTALL_DONE := 1
|
||||
export BUILD
|
||||
export KHDR_INCLUDES
|
||||
|
||||
# set default goal to all, so make without a target runs all, even when
|
||||
# all isn't the first target in the file.
|
||||
@ -155,7 +167,7 @@ khdr:
|
||||
ifeq (1,$(DEFAULT_INSTALL_HDR_PATH))
|
||||
$(MAKE) --no-builtin-rules ARCH=$(ARCH) -C $(top_srcdir) headers_install
|
||||
else
|
||||
$(MAKE) --no-builtin-rules INSTALL_HDR_PATH=$$BUILD/usr \
|
||||
$(MAKE) --no-builtin-rules INSTALL_HDR_PATH=$(abs_objtree)/usr \
|
||||
ARCH=$(ARCH) -C $(top_srcdir) headers_install
|
||||
endif
|
||||
|
||||
@ -165,6 +177,7 @@ all: khdr
|
||||
BUILD_TARGET=$$BUILD/$$TARGET; \
|
||||
mkdir $$BUILD_TARGET -p; \
|
||||
$(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET \
|
||||
O=$(abs_objtree) \
|
||||
$(if $(FORCE_TARGETS),|| exit); \
|
||||
ret=$$((ret * $$?)); \
|
||||
done; exit $$ret;
|
||||
@ -172,7 +185,8 @@ all: khdr
|
||||
run_tests: all
|
||||
@for TARGET in $(TARGETS); do \
|
||||
BUILD_TARGET=$$BUILD/$$TARGET; \
|
||||
$(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET run_tests;\
|
||||
$(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET run_tests \
|
||||
O=$(abs_objtree); \
|
||||
done;
|
||||
|
||||
hotplug:
|
||||
@ -223,6 +237,7 @@ ifdef INSTALL_PATH
|
||||
for TARGET in $(TARGETS); do \
|
||||
BUILD_TARGET=$$BUILD/$$TARGET; \
|
||||
$(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET INSTALL_PATH=$(INSTALL_PATH)/$$TARGET install \
|
||||
O=$(abs_objtree) \
|
||||
$(if $(FORCE_TARGETS),|| exit); \
|
||||
ret=$$((ret * $$?)); \
|
||||
done; exit $$ret;
|
||||
|
2
tools/testing/selftests/exec/.gitignore
vendored
2
tools/testing/selftests/exec/.gitignore
vendored
@ -7,6 +7,8 @@ execveat.moved
|
||||
execveat.path.ephemeral
|
||||
execveat.ephemeral
|
||||
execveat.denatured
|
||||
non-regular
|
||||
null-argv
|
||||
/load_address_*
|
||||
/recursion-depth
|
||||
xxxxxxxx*
|
||||
|
@ -3,7 +3,7 @@ CFLAGS = -Wall
|
||||
CFLAGS += -Wno-nonnull
|
||||
CFLAGS += -D_GNU_SOURCE
|
||||
|
||||
TEST_PROGS := binfmt_script
|
||||
TEST_PROGS := binfmt_script.py
|
||||
TEST_GEN_PROGS := execveat load_address_4096 load_address_2097152 load_address_16777216 non-regular
|
||||
TEST_GEN_FILES := execveat.symlink execveat.denatured script subdir
|
||||
# Makefile is a run-time dependency, since it's accessed by the execveat test
|
||||
|
@ -1,7 +1,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
INCLUDES := -I../include -I../../ -I../../../../../usr/include/ \
|
||||
-I$(KBUILD_OUTPUT)/kselftest/usr/include
|
||||
CFLAGS := $(CFLAGS) -g -O2 -Wall -D_GNU_SOURCE -pthread $(INCLUDES)
|
||||
INCLUDES := -I../include -I../../ -I../../../../../usr/include/
|
||||
CFLAGS := $(CFLAGS) -g -O2 -Wall -D_GNU_SOURCE -pthread $(INCLUDES) $(KHDR_INCLUDES)
|
||||
LDLIBS := -lpthread -lrt
|
||||
|
||||
HEADERS := \
|
||||
@ -24,6 +23,7 @@ TEST_PROGS := run.sh
|
||||
|
||||
top_srcdir = ../../../../..
|
||||
KSFT_KHDR_INSTALL := 1
|
||||
DEFAULT_INSTALL_HDR_PATH := 1
|
||||
include ../../lib.mk
|
||||
|
||||
$(TEST_GEN_FILES): $(HEADERS)
|
||||
|
@ -18,6 +18,8 @@ if [ -z "$BASE_DIR" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
TR_CMD=$(command -v tr)
|
||||
|
||||
# If Perl is unavailable, we must fall back to line-at-a-time prefixing
|
||||
# with sed instead of unbuffered output.
|
||||
tap_prefix()
|
||||
@ -49,6 +51,31 @@ run_one()
|
||||
|
||||
# Reset any "settings"-file variables.
|
||||
export kselftest_timeout="$kselftest_default_timeout"
|
||||
|
||||
# Safe default if tr not available
|
||||
kselftest_cmd_args_ref="KSELFTEST_ARGS"
|
||||
|
||||
# Optional arguments for this command, possibly defined as an
|
||||
# environment variable built using the test executable in all
|
||||
# uppercase and sanitized substituting non acceptable shell
|
||||
# variable name characters with "_" as in:
|
||||
#
|
||||
# KSELFTEST_<UPPERCASE_SANITIZED_TESTNAME>_ARGS="<options>"
|
||||
#
|
||||
# e.g.
|
||||
#
|
||||
# rtctest --> KSELFTEST_RTCTEST_ARGS="/dev/rtc1"
|
||||
#
|
||||
# cpu-on-off-test.sh --> KSELFTEST_CPU_ON_OFF_TEST_SH_ARGS="-a -p 10"
|
||||
#
|
||||
if [ -n "$TR_CMD" ]; then
|
||||
BASENAME_SANITIZED=$(echo "$BASENAME_TEST" | \
|
||||
$TR_CMD -d "[:blank:][:cntrl:]" | \
|
||||
$TR_CMD -c "[:alnum:]_" "_" | \
|
||||
$TR_CMD [:lower:] [:upper:])
|
||||
kselftest_cmd_args_ref="KSELFTEST_${BASENAME_SANITIZED}_ARGS"
|
||||
fi
|
||||
|
||||
# Load per-test-directory kselftest "settings" file.
|
||||
settings="$BASE_DIR/$DIR/settings"
|
||||
if [ -r "$settings" ] ; then
|
||||
@ -69,7 +96,8 @@ run_one()
|
||||
echo "# Warning: file $TEST is missing!"
|
||||
echo "not ok $test_num $TEST_HDR_MSG"
|
||||
else
|
||||
cmd="./$BASENAME_TEST"
|
||||
eval kselftest_cmd_args="\$${kselftest_cmd_args_ref:-}"
|
||||
cmd="./$BASENAME_TEST $kselftest_cmd_args"
|
||||
if [ ! -x "$TEST" ]; then
|
||||
echo "# Warning: file $TEST is not executable"
|
||||
|
||||
|
1
tools/testing/selftests/kvm/.gitignore
vendored
1
tools/testing/selftests/kvm/.gitignore
vendored
@ -20,6 +20,7 @@
|
||||
/x86_64/hyperv_clock
|
||||
/x86_64/hyperv_cpuid
|
||||
/x86_64/hyperv_features
|
||||
/x86_64/hyperv_svm_test
|
||||
/x86_64/mmio_warning_test
|
||||
/x86_64/mmu_role_test
|
||||
/x86_64/platform_info_test
|
||||
|
@ -149,7 +149,7 @@ endif
|
||||
CFLAGS += -Wall -Wstrict-prototypes -Wuninitialized -O2 -g -std=gnu99 \
|
||||
-fno-stack-protector -fno-PIE -I$(LINUX_TOOL_INCLUDE) \
|
||||
-I$(LINUX_TOOL_ARCH_INCLUDE) -I$(LINUX_HDR_PATH) -Iinclude \
|
||||
-I$(<D) -Iinclude/$(UNAME_M) -I.. $(EXTRA_CFLAGS)
|
||||
-I$(<D) -Iinclude/$(UNAME_M) -I.. $(EXTRA_CFLAGS) $(KHDR_INCLUDES)
|
||||
|
||||
no-pie-option := $(call try-run, echo 'int main() { return 0; }' | \
|
||||
$(CC) -Werror -no-pie -x c - -o "$$TMP", -no-pie)
|
||||
|
@ -1,6 +1,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
CFLAGS += -Wall -O2
|
||||
CFLAGS += -Wall -O2 $(KHDR_INCLUDES)
|
||||
|
||||
src_test := $(wildcard *_test.c)
|
||||
|
||||
|
@ -3,9 +3,9 @@ CONFIG_DEBUG_LIST=y
|
||||
CONFIG_SLAB_FREELIST_HARDENED=y
|
||||
CONFIG_FORTIFY_SOURCE=y
|
||||
CONFIG_HARDENED_USERCOPY=y
|
||||
# CONFIG_HARDENED_USERCOPY_FALLBACK is not set
|
||||
CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT=y
|
||||
CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y
|
||||
CONFIG_UBSAN=y
|
||||
CONFIG_UBSAN_BOUNDS=y
|
||||
CONFIG_UBSAN_TRAP=y
|
||||
CONFIG_STACKPROTECTOR_STRONG=y
|
||||
|
@ -2,7 +2,7 @@
|
||||
# Makefile for net selftests
|
||||
|
||||
CFLAGS = -Wall -Wl,--no-as-needed -O2 -g
|
||||
CFLAGS += -I../../../../usr/include/
|
||||
CFLAGS += -I../../../../usr/include/ $(KHDR_INCLUDES)
|
||||
|
||||
TEST_PROGS := run_netsocktests run_afpackettests test_bpf.sh netdevice.sh \
|
||||
rtnetlink.sh xfrm_policy.sh test_blackhole_dev.sh
|
||||
|
@ -3,7 +3,7 @@
|
||||
top_srcdir = ../../../../..
|
||||
KSFT_KHDR_INSTALL := 1
|
||||
|
||||
CFLAGS = -Wall -Wl,--no-as-needed -O2 -g -I$(top_srcdir)/usr/include
|
||||
CFLAGS = -Wall -Wl,--no-as-needed -O2 -g -I$(top_srcdir)/usr/include $(KHDR_INCLUDES)
|
||||
|
||||
TEST_PROGS := mptcp_connect.sh pm_netlink.sh mptcp_join.sh diag.sh \
|
||||
simult_flows.sh mptcp_sockopt.sh
|
||||
|
@ -8,6 +8,7 @@ TEST_PROGS := nft_trans_stress.sh nft_fib.sh nft_nat.sh bridge_brouter.sh \
|
||||
ipip-conntrack-mtu.sh conntrack_tcp_unreplied.sh \
|
||||
conntrack_vrf.sh nft_synproxy.sh
|
||||
|
||||
CFLAGS += $(shell pkg-config --cflags libmnl 2>/dev/null || echo "-I/usr/include/libmnl")
|
||||
LDLIBS = -lmnl
|
||||
TEST_GEN_FILES = nf-queue connect_close
|
||||
|
||||
|
@ -20,6 +20,8 @@
|
||||
|
||||
#define NUM_UIE 3
|
||||
#define ALARM_DELTA 3
|
||||
#define READ_LOOP_DURATION_SEC 30
|
||||
#define READ_LOOP_SLEEP_MS 11
|
||||
|
||||
static char *rtc_file = "/dev/rtc0";
|
||||
|
||||
@ -49,6 +51,70 @@ TEST_F(rtc, date_read) {
|
||||
rtc_tm.tm_hour, rtc_tm.tm_min, rtc_tm.tm_sec);
|
||||
}
|
||||
|
||||
static time_t rtc_time_to_timestamp(struct rtc_time *rtc_time)
|
||||
{
|
||||
struct tm tm_time = {
|
||||
.tm_sec = rtc_time->tm_sec,
|
||||
.tm_min = rtc_time->tm_min,
|
||||
.tm_hour = rtc_time->tm_hour,
|
||||
.tm_mday = rtc_time->tm_mday,
|
||||
.tm_mon = rtc_time->tm_mon,
|
||||
.tm_year = rtc_time->tm_year,
|
||||
};
|
||||
|
||||
return mktime(&tm_time);
|
||||
}
|
||||
|
||||
static void nanosleep_with_retries(long ns)
|
||||
{
|
||||
struct timespec req = {
|
||||
.tv_sec = 0,
|
||||
.tv_nsec = ns,
|
||||
};
|
||||
struct timespec rem;
|
||||
|
||||
while (nanosleep(&req, &rem) != 0) {
|
||||
req.tv_sec = rem.tv_sec;
|
||||
req.tv_nsec = rem.tv_nsec;
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F_TIMEOUT(rtc, date_read_loop, READ_LOOP_DURATION_SEC + 2) {
|
||||
int rc;
|
||||
long iter_count = 0;
|
||||
struct rtc_time rtc_tm;
|
||||
time_t start_rtc_read, prev_rtc_read;
|
||||
|
||||
TH_LOG("Continuously reading RTC time for %ds (with %dms breaks after every read).",
|
||||
READ_LOOP_DURATION_SEC, READ_LOOP_SLEEP_MS);
|
||||
|
||||
rc = ioctl(self->fd, RTC_RD_TIME, &rtc_tm);
|
||||
ASSERT_NE(-1, rc);
|
||||
start_rtc_read = rtc_time_to_timestamp(&rtc_tm);
|
||||
prev_rtc_read = start_rtc_read;
|
||||
|
||||
do {
|
||||
time_t rtc_read;
|
||||
|
||||
rc = ioctl(self->fd, RTC_RD_TIME, &rtc_tm);
|
||||
ASSERT_NE(-1, rc);
|
||||
|
||||
rtc_read = rtc_time_to_timestamp(&rtc_tm);
|
||||
/* Time should not go backwards */
|
||||
ASSERT_LE(prev_rtc_read, rtc_read);
|
||||
/* Time should not increase more then 1s at a time */
|
||||
ASSERT_GE(prev_rtc_read + 1, rtc_read);
|
||||
|
||||
/* Sleep 11ms to avoid killing / overheating the RTC */
|
||||
nanosleep_with_retries(READ_LOOP_SLEEP_MS * 1000000);
|
||||
|
||||
prev_rtc_read = rtc_read;
|
||||
iter_count++;
|
||||
} while (prev_rtc_read <= start_rtc_read + READ_LOOP_DURATION_SEC);
|
||||
|
||||
TH_LOG("Performed %ld RTC time reads.", iter_count);
|
||||
}
|
||||
|
||||
TEST_F_TIMEOUT(rtc, uie_read, NUM_UIE + 2) {
|
||||
int i, rc, irq = 0;
|
||||
unsigned long data;
|
||||
|
@ -1 +1 @@
|
||||
timeout=180
|
||||
timeout=210
|
||||
|
@ -25,7 +25,7 @@ MACHINE ?= $(shell echo $(uname_M) | sed -e 's/aarch64.*/arm64/' -e 's/ppc64.*/p
|
||||
# LDLIBS.
|
||||
MAKEFLAGS += --no-builtin-rules
|
||||
|
||||
CFLAGS = -Wall -I ../../../../usr/include $(EXTRA_CFLAGS)
|
||||
CFLAGS = -Wall -I ../../../../usr/include $(EXTRA_CFLAGS) $(KHDR_INCLUDES)
|
||||
LDLIBS = -lrt -lpthread
|
||||
TEST_GEN_FILES = compaction_test
|
||||
TEST_GEN_FILES += gup_test
|
||||
|
@ -120,6 +120,9 @@ struct uffd_stats {
|
||||
~(unsigned long)(sizeof(unsigned long long) \
|
||||
- 1)))
|
||||
|
||||
#define swap(a, b) \
|
||||
do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } while (0)
|
||||
|
||||
const char *examples =
|
||||
"# Run anonymous memory test on 100MiB region with 99999 bounces:\n"
|
||||
"./userfaultfd anon 100 99999\n\n"
|
||||
|
Loading…
Reference in New Issue
Block a user