mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
linux-kselftest-5.2-rc2
This Kselftest fixes update for Linux 5.2-rc2 consists of: - 2 fixes to regressions introduced in kselftest Makefile test run output refactoring work from Kees Cook. - Adding Atom support to syscall_arg_fault test from Tong Bo. -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEPZKym/RZuOCGeA/kCwJExA0NQxwFAlzoUmUACgkQCwJExA0N QxzwxhAAnwCnP1Z5WXTet3GO4tUbzqtoXC05j1Z+zRbxnfA72RSoBu/by8uG4gZf OR9YQ1F7SR+K2V4CkwO8j5BarHun992HuOAQuFXHFIx3oVxWMDprIQr4hVNm7hRF 14mLDsFWe/lHQFOmcZ2vFwCG3uyr1VukWLW0FPknpTaqb5NcaHyYwgheukmUyw5v CSUZ/OKetxD5DmYoxoIONvM0nIk6iLZtnblSCfiNe9XTzpTD9ngs9Gwn5m1ILN8F HetnOXcjq52SnN5VR6oJt75CvTlqmj9EmuLhhd8PJ4Jgq2TCmRQFxc6WjnBh03IZ 8AMq5w4JPd+XEIf1QeNmfV2w9T4/ftFvAlMz46aUPDkeBfKLRCcTAlfkhotru6a9 Vxkk1PD/+wxFH22ktA8asnXhyfQAegpUWlR2e8Efr7uE1PCl55KBkU9BZYjla9GP Av6wo03ENcuy/eJ/i61H8eygOXRw9pGdJut/P/tEPwBlgdfz8V8/oelX/WQvfUIz fff6lxZgtzoStICOYJFHNCsNZIdIeOtdU+27U2BHRIUQkrkhctcFrn0xXe4ETls8 ZH1SvkIwFnD7Ib+Iztf3ZSyF3Bi4G3tqPfc1WNSbHbJ2LOa5HGZecyd+zJOvnng1 6smviLK3FcwkJn+Pl0/CRkzEzP/dwpqgE1eJPSR7iy++ypv7E7o= =BYfS -----END PGP SIGNATURE----- Merge tag 'linux-kselftest-5.2-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest Pull Kselftest fixes from Shuah Khan: - Two fixes to regressions introduced in kselftest Makefile test run output refactoring work (Kees Cook) - Adding Atom support to syscall_arg_fault test (Tong Bo) * tag 'linux-kselftest-5.2-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest: selftests/timers: Add missing fflush(stdout) calls selftests: Remove forced unbuffering for test running selftests/x86: Support Atom for syscall_arg_fault test
This commit is contained in:
commit
7f8b40e3db
12 changed files with 21 additions and 13 deletions
|
@ -24,16 +24,6 @@ tap_prefix()
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# If stdbuf is unavailable, we must fall back to line-at-a-time piping.
|
|
||||||
tap_unbuffer()
|
|
||||||
{
|
|
||||||
if ! which stdbuf >/dev/null ; then
|
|
||||||
"$@"
|
|
||||||
else
|
|
||||||
stdbuf -i0 -o0 -e0 "$@"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
run_one()
|
run_one()
|
||||||
{
|
{
|
||||||
DIR="$1"
|
DIR="$1"
|
||||||
|
@ -54,7 +44,7 @@ run_one()
|
||||||
echo "not ok $test_num $TEST_HDR_MSG"
|
echo "not ok $test_num $TEST_HDR_MSG"
|
||||||
else
|
else
|
||||||
cd `dirname $TEST` > /dev/null
|
cd `dirname $TEST` > /dev/null
|
||||||
(((((tap_unbuffer ./$BASENAME_TEST 2>&1; echo $? >&3) |
|
(((((./$BASENAME_TEST 2>&1; echo $? >&3) |
|
||||||
tap_prefix >&4) 3>&1) |
|
tap_prefix >&4) 3>&1) |
|
||||||
(read xs; exit $xs)) 4>>"$logfile" &&
|
(read xs; exit $xs)) 4>>"$logfile" &&
|
||||||
echo "ok $test_num $TEST_HDR_MSG") ||
|
echo "ok $test_num $TEST_HDR_MSG") ||
|
||||||
|
|
|
@ -136,6 +136,7 @@ int check_tick_adj(long tickval)
|
||||||
|
|
||||||
eppm = get_ppm_drift();
|
eppm = get_ppm_drift();
|
||||||
printf("%lld usec, %lld ppm", systick + (systick * eppm / MILLION), eppm);
|
printf("%lld usec, %lld ppm", systick + (systick * eppm / MILLION), eppm);
|
||||||
|
fflush(stdout);
|
||||||
|
|
||||||
tx1.modes = 0;
|
tx1.modes = 0;
|
||||||
adjtimex(&tx1);
|
adjtimex(&tx1);
|
||||||
|
|
|
@ -101,6 +101,7 @@ int main(void)
|
||||||
}
|
}
|
||||||
clear_time_state();
|
clear_time_state();
|
||||||
printf(".");
|
printf(".");
|
||||||
|
fflush(stdout);
|
||||||
}
|
}
|
||||||
printf("[OK]\n");
|
printf("[OK]\n");
|
||||||
return ksft_exit_pass();
|
return ksft_exit_pass();
|
||||||
|
|
|
@ -102,6 +102,7 @@ int main(int argc, char **argv)
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
printf("Mqueue latency : ");
|
printf("Mqueue latency : ");
|
||||||
|
fflush(stdout);
|
||||||
|
|
||||||
ret = mqueue_lat_test();
|
ret = mqueue_lat_test();
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
|
|
|
@ -142,6 +142,7 @@ int main(int argc, char **argv)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
printf("Nanosleep %-31s ", clockstring(clockid));
|
printf("Nanosleep %-31s ", clockstring(clockid));
|
||||||
|
fflush(stdout);
|
||||||
|
|
||||||
length = 10;
|
length = 10;
|
||||||
while (length <= (NSEC_PER_SEC * 10)) {
|
while (length <= (NSEC_PER_SEC * 10)) {
|
||||||
|
|
|
@ -155,6 +155,7 @@ int main(int argc, char **argv)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
printf("nsleep latency %-26s ", clockstring(clockid));
|
printf("nsleep latency %-26s ", clockstring(clockid));
|
||||||
|
fflush(stdout);
|
||||||
|
|
||||||
length = 10;
|
length = 10;
|
||||||
while (length <= (NSEC_PER_SEC * 10)) {
|
while (length <= (NSEC_PER_SEC * 10)) {
|
||||||
|
|
|
@ -112,6 +112,7 @@ int main(int argv, char **argc)
|
||||||
printf("WARNING: ADJ_OFFSET in progress, this will cause inaccurate results\n");
|
printf("WARNING: ADJ_OFFSET in progress, this will cause inaccurate results\n");
|
||||||
|
|
||||||
printf("Estimating clock drift: ");
|
printf("Estimating clock drift: ");
|
||||||
|
fflush(stdout);
|
||||||
sleep(120);
|
sleep(120);
|
||||||
|
|
||||||
get_monotonic_and_raw(&mon, &raw);
|
get_monotonic_and_raw(&mon, &raw);
|
||||||
|
|
|
@ -55,6 +55,7 @@ int main(int argc, char **argv)
|
||||||
printf("tai offset started at %i\n", ret);
|
printf("tai offset started at %i\n", ret);
|
||||||
|
|
||||||
printf("Checking tai offsets can be properly set: ");
|
printf("Checking tai offsets can be properly set: ");
|
||||||
|
fflush(stdout);
|
||||||
for (i = 1; i <= 60; i++) {
|
for (i = 1; i <= 60; i++) {
|
||||||
ret = set_tai(i);
|
ret = set_tai(i);
|
||||||
ret = get_tai();
|
ret = get_tai();
|
||||||
|
|
|
@ -65,6 +65,7 @@ int main(int argc, char **argv)
|
||||||
printf("tz_minuteswest started at %i, dst at %i\n", min, dst);
|
printf("tz_minuteswest started at %i, dst at %i\n", min, dst);
|
||||||
|
|
||||||
printf("Checking tz_minuteswest can be properly set: ");
|
printf("Checking tz_minuteswest can be properly set: ");
|
||||||
|
fflush(stdout);
|
||||||
for (i = -15*60; i < 15*60; i += 30) {
|
for (i = -15*60; i < 15*60; i += 30) {
|
||||||
ret = set_tz(i, dst);
|
ret = set_tz(i, dst);
|
||||||
ret = get_tz_min();
|
ret = get_tz_min();
|
||||||
|
@ -76,6 +77,7 @@ int main(int argc, char **argv)
|
||||||
printf("[OK]\n");
|
printf("[OK]\n");
|
||||||
|
|
||||||
printf("Checking invalid tz_minuteswest values are caught: ");
|
printf("Checking invalid tz_minuteswest values are caught: ");
|
||||||
|
fflush(stdout);
|
||||||
|
|
||||||
if (!set_tz(-15*60-1, dst)) {
|
if (!set_tz(-15*60-1, dst)) {
|
||||||
printf("[FAILED] %i didn't return failure!\n", -15*60-1);
|
printf("[FAILED] %i didn't return failure!\n", -15*60-1);
|
||||||
|
|
|
@ -163,6 +163,7 @@ int main(int argc, char **argv)
|
||||||
strftime(buf, 255, "%a, %d %b %Y %T %z", localtime(&start));
|
strftime(buf, 255, "%a, %d %b %Y %T %z", localtime(&start));
|
||||||
printf("%s\n", buf);
|
printf("%s\n", buf);
|
||||||
printf("Testing consistency with %i threads for %ld seconds: ", thread_count, runtime);
|
printf("Testing consistency with %i threads for %ld seconds: ", thread_count, runtime);
|
||||||
|
fflush(stdout);
|
||||||
|
|
||||||
/* spawn */
|
/* spawn */
|
||||||
for (i = 0; i < thread_count; i++)
|
for (i = 0; i < thread_count; i++)
|
||||||
|
|
|
@ -123,6 +123,7 @@ int validate_freq(void)
|
||||||
/* Set the leap second insert flag */
|
/* Set the leap second insert flag */
|
||||||
|
|
||||||
printf("Testing ADJ_FREQ... ");
|
printf("Testing ADJ_FREQ... ");
|
||||||
|
fflush(stdout);
|
||||||
for (i = 0; i < NUM_FREQ_VALID; i++) {
|
for (i = 0; i < NUM_FREQ_VALID; i++) {
|
||||||
tx.modes = ADJ_FREQUENCY;
|
tx.modes = ADJ_FREQUENCY;
|
||||||
tx.freq = valid_freq[i];
|
tx.freq = valid_freq[i];
|
||||||
|
@ -250,6 +251,7 @@ int set_bad_offset(long sec, long usec, int use_nano)
|
||||||
int validate_set_offset(void)
|
int validate_set_offset(void)
|
||||||
{
|
{
|
||||||
printf("Testing ADJ_SETOFFSET... ");
|
printf("Testing ADJ_SETOFFSET... ");
|
||||||
|
fflush(stdout);
|
||||||
|
|
||||||
/* Test valid values */
|
/* Test valid values */
|
||||||
if (set_offset(NSEC_PER_SEC - 1, 1))
|
if (set_offset(NSEC_PER_SEC - 1, 1))
|
||||||
|
|
|
@ -43,7 +43,7 @@ static sigjmp_buf jmpbuf;
|
||||||
|
|
||||||
static volatile sig_atomic_t n_errs;
|
static volatile sig_atomic_t n_errs;
|
||||||
|
|
||||||
static void sigsegv(int sig, siginfo_t *info, void *ctx_void)
|
static void sigsegv_or_sigbus(int sig, siginfo_t *info, void *ctx_void)
|
||||||
{
|
{
|
||||||
ucontext_t *ctx = (ucontext_t*)ctx_void;
|
ucontext_t *ctx = (ucontext_t*)ctx_void;
|
||||||
|
|
||||||
|
@ -73,7 +73,13 @@ int main()
|
||||||
if (sigaltstack(&stack, NULL) != 0)
|
if (sigaltstack(&stack, NULL) != 0)
|
||||||
err(1, "sigaltstack");
|
err(1, "sigaltstack");
|
||||||
|
|
||||||
sethandler(SIGSEGV, sigsegv, SA_ONSTACK);
|
sethandler(SIGSEGV, sigsegv_or_sigbus, SA_ONSTACK);
|
||||||
|
/*
|
||||||
|
* The actual exception can vary. On Atom CPUs, we get #SS
|
||||||
|
* instead of #PF when the vDSO fails to access the stack when
|
||||||
|
* ESP is too close to 2^32, and #SS causes SIGBUS.
|
||||||
|
*/
|
||||||
|
sethandler(SIGBUS, sigsegv_or_sigbus, SA_ONSTACK);
|
||||||
sethandler(SIGILL, sigill, SA_ONSTACK);
|
sethandler(SIGILL, sigill, SA_ONSTACK);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Add table
Reference in a new issue