Commit 7f8b40e3 authored by Linus Torvalds's avatar Linus Torvalds

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

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
parents e7bd3e24 fe483192
...@@ -24,16 +24,6 @@ tap_prefix() ...@@ -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() ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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; ...@@ -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() ...@@ -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);
/* /*
......
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