linux_kselftest-next-6.8-rc1
This kselftest update for Linux 6.8-rc1 consists of enhancements to reporting test results, fixes to root and user run behavior and fixing ksft_print_msg() calls. -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEPZKym/RZuOCGeA/kCwJExA0NQxwFAmWdmy0ACgkQCwJExA0N QxxN0BAA0Uukn5U1LMJ57K+4smPsQ0EfjWCZw9pZ2GL9eWT//JPQDcuGY04jBpmZ 7zIXMK2k8xctHqmRBkIX8qaLBQI0nHVxpF82UgrvgrJsyCYWvEh6ExDXOFdpYuPi t8JOyR2TF3vOeZorIly4ZpxNm5tHG2AXrr2dvaWiuEukfa45YbEHu4qgoLmH0Nr5 h072085EPTNR6nsBPEwWZFOjQGOGHIqkAiUmXSukQ2iTQXjO4xg/zDiB+sGihUet /fNzmAMDnXhf5Uxsk4nRnKTp+XFnJhXpt+mGRcXQBDEveQzxDvl3qdrUOEgIWsAo Dz6pUPbarGRsNAMGhHeSdeC5GEWJMB9cZFr3CsTFDzcZHzAacSDBGNpMSCtBq3kU Xj/2dFRVN/K4zbCxA+IpjZ3TmSjb7eFi2sOr4EpkKLwkFfXyMpTbtLWSovcfiBzQ flnm1Cuhy6nMWBcXH+GtaXb0Ix/R6qFoYi3dt94d686BVSmKbYjSSVanK0cim2lU kmf3nBDhZNVunR6mYVWjAovMUHBUmOP6kdBeAS5QCaqwNm1gzXOfOBFIqczPwNbU qjxkDhwOb2v7Suze2kTszuHy+zfIrHNN0b8AoLAsA25yVM6ClJZc/Q8Pt0IGvvBF bYqup+To8/eUcUD4CsHoE45Huyx7IILBEcCqBk+q8qyaPayFMEA= =2+oJ -----END PGP SIGNATURE----- Merge tag 'linux_kselftest-next-6.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest Pull kselftest update from Shuah Khan: "Enhancements to reporting test results, fixes to root and user run behavior and fixing ksft_print_msg() calls" * tag 'linux_kselftest-next-6.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest: tracing/selftests: Add ownership modification tests for eventfs selftests: sched: Remove initialization to 0 for a static variable selftests: capabilities: namespace create varies for root and normal user selftests: prctl: Add prctl test for PR_GET_NAME kselftest/vDSO: Use ksft_print_msg() rather than printf in vdso_test_abi kselftest/vDSO: Fix message formatting for clock_id logging kselftest/vDSO: Make test name reporting for vdso_abi_test tooling friendly selftests:x86: Fix Format String Warnings in lam.c selftests/breakpoints: Fix format specifier in ksft_print_msg in step_after_suspend_test.c selftests:breakpoints: Fix Format String Warning in breakpoint_test
This commit is contained in:
commit
ab27740f76
@ -284,9 +284,9 @@ static void check_success(const char *msg)
|
|||||||
nr_tests++;
|
nr_tests++;
|
||||||
|
|
||||||
if (ret)
|
if (ret)
|
||||||
ksft_test_result_pass(msg);
|
ksft_test_result_pass("%s", msg);
|
||||||
else
|
else
|
||||||
ksft_test_result_fail(msg);
|
ksft_test_result_fail("%s", msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void launch_instruction_breakpoints(char *buf, int local, int global)
|
static void launch_instruction_breakpoints(char *buf, int local, int global)
|
||||||
|
@ -89,7 +89,7 @@ int run_test(int cpu)
|
|||||||
|
|
||||||
wpid = waitpid(pid, &status, __WALL);
|
wpid = waitpid(pid, &status, __WALL);
|
||||||
if (wpid != pid) {
|
if (wpid != pid) {
|
||||||
ksft_print_msg("waitpid() failed: $s\n", strerror(errno));
|
ksft_print_msg("waitpid() failed: %s\n", strerror(errno));
|
||||||
return KSFT_FAIL;
|
return KSFT_FAIL;
|
||||||
}
|
}
|
||||||
if (WIFEXITED(status)) {
|
if (WIFEXITED(status)) {
|
||||||
|
@ -88,11 +88,7 @@ static bool create_and_enter_ns(uid_t inner_uid)
|
|||||||
outer_uid = getuid();
|
outer_uid = getuid();
|
||||||
outer_gid = getgid();
|
outer_gid = getgid();
|
||||||
|
|
||||||
/*
|
if (outer_uid == 0 && unshare(CLONE_NEWNS) == 0) {
|
||||||
* TODO: If we're already root, we could skip creating the userns.
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (unshare(CLONE_NEWNS) == 0) {
|
|
||||||
ksft_print_msg("[NOTE]\tUsing global UIDs for tests\n");
|
ksft_print_msg("[NOTE]\tUsing global UIDs for tests\n");
|
||||||
if (prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0) != 0)
|
if (prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0) != 0)
|
||||||
ksft_exit_fail_msg("PR_SET_KEEPCAPS - %s\n",
|
ksft_exit_fail_msg("PR_SET_KEEPCAPS - %s\n",
|
||||||
|
114
tools/testing/selftests/ftrace/test.d/00basic/test_ownership.tc
Normal file
114
tools/testing/selftests/ftrace/test.d/00basic/test_ownership.tc
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
|
# description: Test file and directory owership changes for eventfs
|
||||||
|
|
||||||
|
original_group=`stat -c "%g" .`
|
||||||
|
original_owner=`stat -c "%u" .`
|
||||||
|
|
||||||
|
mount_point=`stat -c '%m' .`
|
||||||
|
mount_options=`mount | grep "$mount_point" | sed -e 's/.*(\(.*\)).*/\1/'`
|
||||||
|
|
||||||
|
# find another owner and group that is not the original
|
||||||
|
other_group=`tac /etc/group | grep -v ":$original_group:" | head -1 | cut -d: -f3`
|
||||||
|
other_owner=`tac /etc/passwd | grep -v ":$original_owner:" | head -1 | cut -d: -f3`
|
||||||
|
|
||||||
|
# Remove any group ownership already
|
||||||
|
new_options=`echo "$mount_options" | sed -e "s/gid=[0-9]*/gid=$other_group/"`
|
||||||
|
|
||||||
|
if [ "$new_options" = "$mount_options" ]; then
|
||||||
|
new_options="$mount_options,gid=$other_group"
|
||||||
|
mount_options="$mount_options,gid=$original_group"
|
||||||
|
fi
|
||||||
|
|
||||||
|
canary="events/timer events/timer/timer_cancel events/timer/timer_cancel/format"
|
||||||
|
|
||||||
|
test() {
|
||||||
|
file=$1
|
||||||
|
test_group=$2
|
||||||
|
|
||||||
|
owner=`stat -c "%u" $file`
|
||||||
|
group=`stat -c "%g" $file`
|
||||||
|
|
||||||
|
echo "testing $file $owner=$original_owner and $group=$test_group"
|
||||||
|
if [ $owner -ne $original_owner ]; then
|
||||||
|
exit_fail
|
||||||
|
fi
|
||||||
|
if [ $group -ne $test_group ]; then
|
||||||
|
exit_fail
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Note, the remount does not update ownership so test going to and from owner
|
||||||
|
echo "test owner $file to $other_owner"
|
||||||
|
chown $other_owner $file
|
||||||
|
owner=`stat -c "%u" $file`
|
||||||
|
if [ $owner -ne $other_owner ]; then
|
||||||
|
exit_fail
|
||||||
|
fi
|
||||||
|
|
||||||
|
chown $original_owner $file
|
||||||
|
owner=`stat -c "%u" $file`
|
||||||
|
if [ $owner -ne $original_owner ]; then
|
||||||
|
exit_fail
|
||||||
|
fi
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
run_tests() {
|
||||||
|
for d in "." "events" "events/sched" "events/sched/sched_switch" "events/sched/sched_switch/enable" $canary; do
|
||||||
|
test "$d" $other_group
|
||||||
|
done
|
||||||
|
|
||||||
|
chgrp $original_group events
|
||||||
|
test "events" $original_group
|
||||||
|
for d in "." "events/sched" "events/sched/sched_switch" "events/sched/sched_switch/enable" $canary; do
|
||||||
|
test "$d" $other_group
|
||||||
|
done
|
||||||
|
|
||||||
|
chgrp $original_group events/sched
|
||||||
|
test "events/sched" $original_group
|
||||||
|
for d in "." "events/sched/sched_switch" "events/sched/sched_switch/enable" $canary; do
|
||||||
|
test "$d" $other_group
|
||||||
|
done
|
||||||
|
|
||||||
|
chgrp $original_group events/sched/sched_switch
|
||||||
|
test "events/sched/sched_switch" $original_group
|
||||||
|
for d in "." "events/sched/sched_switch/enable" $canary; do
|
||||||
|
test "$d" $other_group
|
||||||
|
done
|
||||||
|
|
||||||
|
chgrp $original_group events/sched/sched_switch/enable
|
||||||
|
test "events/sched/sched_switch/enable" $original_group
|
||||||
|
for d in "." $canary; do
|
||||||
|
test "$d" $other_group
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
mount -o remount,"$new_options" .
|
||||||
|
|
||||||
|
run_tests
|
||||||
|
|
||||||
|
mount -o remount,"$mount_options" .
|
||||||
|
|
||||||
|
for d in "." "events" "events/sched" "events/sched/sched_switch" "events/sched/sched_switch/enable" $canary; do
|
||||||
|
test "$d" $original_group
|
||||||
|
done
|
||||||
|
|
||||||
|
# check instances as well
|
||||||
|
|
||||||
|
chgrp $other_group instances
|
||||||
|
|
||||||
|
instance="$(mktemp -u test-XXXXXX)"
|
||||||
|
|
||||||
|
mkdir instances/$instance
|
||||||
|
|
||||||
|
cd instances/$instance
|
||||||
|
|
||||||
|
run_tests
|
||||||
|
|
||||||
|
cd ../..
|
||||||
|
|
||||||
|
rmdir instances/$instance
|
||||||
|
|
||||||
|
chgrp $original_group instances
|
||||||
|
|
||||||
|
exit 0
|
@ -12,6 +12,7 @@
|
|||||||
#define CHANGE_NAME "changename"
|
#define CHANGE_NAME "changename"
|
||||||
#define EMPTY_NAME ""
|
#define EMPTY_NAME ""
|
||||||
#define TASK_COMM_LEN 16
|
#define TASK_COMM_LEN 16
|
||||||
|
#define MAX_PATH_LEN 50
|
||||||
|
|
||||||
int set_name(char *name)
|
int set_name(char *name)
|
||||||
{
|
{
|
||||||
@ -47,6 +48,35 @@ int check_null_pointer(char *check_name)
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int check_name(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
int pid;
|
||||||
|
|
||||||
|
pid = getpid();
|
||||||
|
FILE *fptr = NULL;
|
||||||
|
char path[MAX_PATH_LEN] = {};
|
||||||
|
char name[TASK_COMM_LEN] = {};
|
||||||
|
char output[TASK_COMM_LEN] = {};
|
||||||
|
int j;
|
||||||
|
|
||||||
|
j = snprintf(path, MAX_PATH_LEN, "/proc/self/task/%d/comm", pid);
|
||||||
|
fptr = fopen(path, "r");
|
||||||
|
if (!fptr)
|
||||||
|
return -EIO;
|
||||||
|
|
||||||
|
fscanf(fptr, "%s", output);
|
||||||
|
if (ferror(fptr))
|
||||||
|
return -EIO;
|
||||||
|
|
||||||
|
int res = prctl(PR_GET_NAME, name, NULL, NULL, NULL);
|
||||||
|
|
||||||
|
if (res < 0)
|
||||||
|
return -errno;
|
||||||
|
|
||||||
|
return !strcmp(output, name);
|
||||||
|
}
|
||||||
|
|
||||||
TEST(rename_process) {
|
TEST(rename_process) {
|
||||||
|
|
||||||
EXPECT_GE(set_name(CHANGE_NAME), 0);
|
EXPECT_GE(set_name(CHANGE_NAME), 0);
|
||||||
@ -57,6 +87,8 @@ TEST(rename_process) {
|
|||||||
|
|
||||||
EXPECT_GE(set_name(CHANGE_NAME), 0);
|
EXPECT_GE(set_name(CHANGE_NAME), 0);
|
||||||
EXPECT_LT(check_null_pointer(CHANGE_NAME), 0);
|
EXPECT_LT(check_null_pointer(CHANGE_NAME), 0);
|
||||||
|
|
||||||
|
EXPECT_TRUE(check_name());
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_HARNESS_MAIN
|
TEST_HARNESS_MAIN
|
||||||
|
@ -72,7 +72,7 @@ struct child_args {
|
|||||||
|
|
||||||
static struct child_args procs[MAX_PROCESSES];
|
static struct child_args procs[MAX_PROCESSES];
|
||||||
static int num_processes = 2;
|
static int num_processes = 2;
|
||||||
static int need_cleanup = 0;
|
static int need_cleanup;
|
||||||
|
|
||||||
static int _prctl(int option, unsigned long arg2, unsigned long arg3, unsigned long arg4,
|
static int _prctl(int option, unsigned long arg2, unsigned long arg3, unsigned long arg4,
|
||||||
unsigned long arg5)
|
unsigned long arg5)
|
||||||
|
@ -33,9 +33,20 @@ typedef long (*vdso_clock_gettime_t)(clockid_t clk_id, struct timespec *ts);
|
|||||||
typedef long (*vdso_clock_getres_t)(clockid_t clk_id, struct timespec *ts);
|
typedef long (*vdso_clock_getres_t)(clockid_t clk_id, struct timespec *ts);
|
||||||
typedef time_t (*vdso_time_t)(time_t *t);
|
typedef time_t (*vdso_time_t)(time_t *t);
|
||||||
|
|
||||||
#define VDSO_TEST_PASS_MSG() "\n%s(): PASS\n", __func__
|
const char *vdso_clock_name[12] = {
|
||||||
#define VDSO_TEST_FAIL_MSG(x) "\n%s(): %s FAIL\n", __func__, x
|
"CLOCK_REALTIME",
|
||||||
#define VDSO_TEST_SKIP_MSG(x) "\n%s(): SKIP: Could not find %s\n", __func__, x
|
"CLOCK_MONOTONIC",
|
||||||
|
"CLOCK_PROCESS_CPUTIME_ID",
|
||||||
|
"CLOCK_THREAD_CPUTIME_ID",
|
||||||
|
"CLOCK_MONOTONIC_RAW",
|
||||||
|
"CLOCK_REALTIME_COARSE",
|
||||||
|
"CLOCK_MONOTONIC_COARSE",
|
||||||
|
"CLOCK_BOOTTIME",
|
||||||
|
"CLOCK_REALTIME_ALARM",
|
||||||
|
"CLOCK_BOOTTIME_ALARM",
|
||||||
|
"CLOCK_SGI_CYCLE",
|
||||||
|
"CLOCK_TAI",
|
||||||
|
};
|
||||||
|
|
||||||
static void vdso_test_gettimeofday(void)
|
static void vdso_test_gettimeofday(void)
|
||||||
{
|
{
|
||||||
@ -44,7 +55,8 @@ static void vdso_test_gettimeofday(void)
|
|||||||
(vdso_gettimeofday_t)vdso_sym(version, name[0]);
|
(vdso_gettimeofday_t)vdso_sym(version, name[0]);
|
||||||
|
|
||||||
if (!vdso_gettimeofday) {
|
if (!vdso_gettimeofday) {
|
||||||
ksft_test_result_skip(VDSO_TEST_SKIP_MSG(name[0]));
|
ksft_print_msg("Couldn't find %s\n", name[0]);
|
||||||
|
ksft_test_result_skip("%s\n", name[0]);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -54,9 +66,9 @@ static void vdso_test_gettimeofday(void)
|
|||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
ksft_print_msg("The time is %lld.%06lld\n",
|
ksft_print_msg("The time is %lld.%06lld\n",
|
||||||
(long long)tv.tv_sec, (long long)tv.tv_usec);
|
(long long)tv.tv_sec, (long long)tv.tv_usec);
|
||||||
ksft_test_result_pass(VDSO_TEST_PASS_MSG());
|
ksft_test_result_pass("%s\n", name[0]);
|
||||||
} else {
|
} else {
|
||||||
ksft_test_result_fail(VDSO_TEST_FAIL_MSG(name[0]));
|
ksft_test_result_fail("%s\n", name[0]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -67,7 +79,9 @@ static void vdso_test_clock_gettime(clockid_t clk_id)
|
|||||||
(vdso_clock_gettime_t)vdso_sym(version, name[1]);
|
(vdso_clock_gettime_t)vdso_sym(version, name[1]);
|
||||||
|
|
||||||
if (!vdso_clock_gettime) {
|
if (!vdso_clock_gettime) {
|
||||||
ksft_test_result_skip(VDSO_TEST_SKIP_MSG(name[1]));
|
ksft_print_msg("Couldn't find %s\n", name[1]);
|
||||||
|
ksft_test_result_skip("%s %s\n", name[1],
|
||||||
|
vdso_clock_name[clk_id]);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -77,9 +91,11 @@ static void vdso_test_clock_gettime(clockid_t clk_id)
|
|||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
ksft_print_msg("The time is %lld.%06lld\n",
|
ksft_print_msg("The time is %lld.%06lld\n",
|
||||||
(long long)ts.tv_sec, (long long)ts.tv_nsec);
|
(long long)ts.tv_sec, (long long)ts.tv_nsec);
|
||||||
ksft_test_result_pass(VDSO_TEST_PASS_MSG());
|
ksft_test_result_pass("%s %s\n", name[1],
|
||||||
|
vdso_clock_name[clk_id]);
|
||||||
} else {
|
} else {
|
||||||
ksft_test_result_fail(VDSO_TEST_FAIL_MSG(name[1]));
|
ksft_test_result_fail("%s %s\n", name[1],
|
||||||
|
vdso_clock_name[clk_id]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -90,7 +106,8 @@ static void vdso_test_time(void)
|
|||||||
(vdso_time_t)vdso_sym(version, name[2]);
|
(vdso_time_t)vdso_sym(version, name[2]);
|
||||||
|
|
||||||
if (!vdso_time) {
|
if (!vdso_time) {
|
||||||
ksft_test_result_skip(VDSO_TEST_SKIP_MSG(name[2]));
|
ksft_print_msg("Couldn't find %s\n", name[2]);
|
||||||
|
ksft_test_result_skip("%s\n", name[2]);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -99,9 +116,9 @@ static void vdso_test_time(void)
|
|||||||
if (ret > 0) {
|
if (ret > 0) {
|
||||||
ksft_print_msg("The time in hours since January 1, 1970 is %lld\n",
|
ksft_print_msg("The time in hours since January 1, 1970 is %lld\n",
|
||||||
(long long)(ret / 3600));
|
(long long)(ret / 3600));
|
||||||
ksft_test_result_pass(VDSO_TEST_PASS_MSG());
|
ksft_test_result_pass("%s\n", name[2]);
|
||||||
} else {
|
} else {
|
||||||
ksft_test_result_fail(VDSO_TEST_FAIL_MSG(name[2]));
|
ksft_test_result_fail("%s\n", name[2]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,7 +131,9 @@ static void vdso_test_clock_getres(clockid_t clk_id)
|
|||||||
(vdso_clock_getres_t)vdso_sym(version, name[3]);
|
(vdso_clock_getres_t)vdso_sym(version, name[3]);
|
||||||
|
|
||||||
if (!vdso_clock_getres) {
|
if (!vdso_clock_getres) {
|
||||||
ksft_test_result_skip(VDSO_TEST_SKIP_MSG(name[3]));
|
ksft_print_msg("Couldn't find %s\n", name[3]);
|
||||||
|
ksft_test_result_skip("%s %s\n", name[3],
|
||||||
|
vdso_clock_name[clk_id]);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -137,34 +156,21 @@ static void vdso_test_clock_getres(clockid_t clk_id)
|
|||||||
clock_getres_fail++;
|
clock_getres_fail++;
|
||||||
|
|
||||||
if (clock_getres_fail > 0) {
|
if (clock_getres_fail > 0) {
|
||||||
ksft_test_result_fail(VDSO_TEST_FAIL_MSG(name[3]));
|
ksft_test_result_fail("%s %s\n", name[3],
|
||||||
|
vdso_clock_name[clk_id]);
|
||||||
} else {
|
} else {
|
||||||
ksft_test_result_pass(VDSO_TEST_PASS_MSG());
|
ksft_test_result_pass("%s %s\n", name[3],
|
||||||
|
vdso_clock_name[clk_id]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *vdso_clock_name[12] = {
|
|
||||||
"CLOCK_REALTIME",
|
|
||||||
"CLOCK_MONOTONIC",
|
|
||||||
"CLOCK_PROCESS_CPUTIME_ID",
|
|
||||||
"CLOCK_THREAD_CPUTIME_ID",
|
|
||||||
"CLOCK_MONOTONIC_RAW",
|
|
||||||
"CLOCK_REALTIME_COARSE",
|
|
||||||
"CLOCK_MONOTONIC_COARSE",
|
|
||||||
"CLOCK_BOOTTIME",
|
|
||||||
"CLOCK_REALTIME_ALARM",
|
|
||||||
"CLOCK_BOOTTIME_ALARM",
|
|
||||||
"CLOCK_SGI_CYCLE",
|
|
||||||
"CLOCK_TAI",
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This function calls vdso_test_clock_gettime and vdso_test_clock_getres
|
* This function calls vdso_test_clock_gettime and vdso_test_clock_getres
|
||||||
* with different values for clock_id.
|
* with different values for clock_id.
|
||||||
*/
|
*/
|
||||||
static inline void vdso_test_clock(clockid_t clock_id)
|
static inline void vdso_test_clock(clockid_t clock_id)
|
||||||
{
|
{
|
||||||
ksft_print_msg("\nclock_id: %s\n", vdso_clock_name[clock_id]);
|
ksft_print_msg("clock_id: %s\n", vdso_clock_name[clock_id]);
|
||||||
|
|
||||||
vdso_test_clock_gettime(clock_id);
|
vdso_test_clock_gettime(clock_id);
|
||||||
|
|
||||||
@ -181,14 +187,14 @@ int main(int argc, char **argv)
|
|||||||
ksft_set_plan(VDSO_TEST_PLAN);
|
ksft_set_plan(VDSO_TEST_PLAN);
|
||||||
|
|
||||||
if (!sysinfo_ehdr) {
|
if (!sysinfo_ehdr) {
|
||||||
printf("AT_SYSINFO_EHDR is not present!\n");
|
ksft_print_msg("AT_SYSINFO_EHDR is not present!\n");
|
||||||
return KSFT_SKIP;
|
return KSFT_SKIP;
|
||||||
}
|
}
|
||||||
|
|
||||||
version = versions[VDSO_VERSION];
|
version = versions[VDSO_VERSION];
|
||||||
name = (const char **)&names[VDSO_NAMES];
|
name = (const char **)&names[VDSO_NAMES];
|
||||||
|
|
||||||
printf("[vDSO kselftest] VDSO_VERSION: %s\n", version);
|
ksft_print_msg("[vDSO kselftest] VDSO_VERSION: %s\n", version);
|
||||||
|
|
||||||
vdso_init_from_sysinfo_ehdr(getauxval(AT_SYSINFO_EHDR));
|
vdso_init_from_sysinfo_ehdr(getauxval(AT_SYSINFO_EHDR));
|
||||||
|
|
||||||
|
@ -817,7 +817,7 @@ static void run_test(struct testcases *test, int count)
|
|||||||
|
|
||||||
/* return 3 is not support LA57, the case should be skipped */
|
/* return 3 is not support LA57, the case should be skipped */
|
||||||
if (ret == 3) {
|
if (ret == 3) {
|
||||||
ksft_test_result_skip(t->msg);
|
ksft_test_result_skip("%s", t->msg);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -826,7 +826,7 @@ static void run_test(struct testcases *test, int count)
|
|||||||
else
|
else
|
||||||
ret = !(t->expected);
|
ret = !(t->expected);
|
||||||
|
|
||||||
ksft_test_result(ret, t->msg);
|
ksft_test_result(ret, "%s", t->msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user