KERNEL SELFTESTS: linux_headers_dir is /usr/src/linux-headers-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749 2020-06-21 09:33:59 ln -sf /usr/bin/clang 2020-06-21 09:33:59 ln -sf /usr/bin/llc 2020-06-21 09:33:59 sed -i s/default_timeout=45/default_timeout=300/ kselftest/runner.sh 2020-06-21 09:33:59 make run_tests -C x86 make: Entering directory '/usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86' gcc -m32 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/single_step_syscall_32 -O2 -g -std=gnu99 -pthread -Wall -no-pie -DCAN_BUILD_32 -DCAN_BUILD_64 single_step_syscall.c -lrt -ldl -lm gcc -m32 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/sysret_ss_attrs_32 -O2 -g -std=gnu99 -pthread -Wall -no-pie -DCAN_BUILD_32 -DCAN_BUILD_64 sysret_ss_attrs.c -lrt -ldl -lm gcc -m32 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/syscall_nt_32 -O2 -g -std=gnu99 -pthread -Wall -no-pie -DCAN_BUILD_32 -DCAN_BUILD_64 syscall_nt.c -lrt -ldl -lm gcc -m32 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/test_mremap_vdso_32 -O2 -g -std=gnu99 -pthread -Wall -no-pie -DCAN_BUILD_32 -DCAN_BUILD_64 test_mremap_vdso.c -lrt -ldl -lm gcc -m32 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/check_initial_reg_state_32 -O2 -g -std=gnu99 -pthread -Wall -no-pie -Wl,-ereal_start -static -DCAN_BUILD_32 -DCAN_BUILD_64 check_initial_reg_state.c -lrt -ldl -lm gcc -m32 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/sigreturn_32 -O2 -g -std=gnu99 -pthread -Wall -no-pie -DCAN_BUILD_32 -DCAN_BUILD_64 sigreturn.c -lrt -ldl -lm gcc -m32 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/iopl_32 -O2 -g -std=gnu99 -pthread -Wall -no-pie -DCAN_BUILD_32 -DCAN_BUILD_64 iopl.c -lrt -ldl -lm gcc -m32 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/ioperm_32 -O2 -g -std=gnu99 -pthread -Wall -no-pie -DCAN_BUILD_32 -DCAN_BUILD_64 ioperm.c -lrt -ldl -lm gcc -m32 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/protection_keys_32 -O2 -g -std=gnu99 -pthread -Wall -no-pie -DCAN_BUILD_32 -DCAN_BUILD_64 protection_keys.c -lrt -ldl -lm gcc -m32 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/test_vdso_32 -O2 -g -std=gnu99 -pthread -Wall -no-pie -DCAN_BUILD_32 -DCAN_BUILD_64 test_vdso.c -lrt -ldl -lm gcc -m32 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/test_vsyscall_32 -O2 -g -std=gnu99 -pthread -Wall -no-pie -DCAN_BUILD_32 -DCAN_BUILD_64 test_vsyscall.c -lrt -ldl -lm gcc -m32 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/mov_ss_trap_32 -O2 -g -std=gnu99 -pthread -Wall -no-pie -DCAN_BUILD_32 -DCAN_BUILD_64 mov_ss_trap.c -lrt -ldl -lm gcc -m32 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/syscall_arg_fault_32 -O2 -g -std=gnu99 -pthread -Wall -no-pie -DCAN_BUILD_32 -DCAN_BUILD_64 syscall_arg_fault.c -lrt -ldl -lm gcc -m32 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/entry_from_vm86_32 -O2 -g -std=gnu99 -pthread -Wall -no-pie -DCAN_BUILD_32 -DCAN_BUILD_64 entry_from_vm86.c -lrt -ldl -lm gcc -m32 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/test_syscall_vdso_32 -O2 -g -std=gnu99 -pthread -Wall -no-pie -DCAN_BUILD_32 -DCAN_BUILD_64 test_syscall_vdso.c thunks_32.S -lrt -ldl -lm gcc -m32 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/unwind_vdso_32 -O2 -g -std=gnu99 -pthread -Wall -no-pie -DCAN_BUILD_32 -DCAN_BUILD_64 unwind_vdso.c -lrt -ldl -lm gcc -m32 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/test_FCMOV_32 -O2 -g -std=gnu99 -pthread -Wall -no-pie -DCAN_BUILD_32 -DCAN_BUILD_64 test_FCMOV.c -lrt -ldl -lm gcc -m32 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/test_FCOMI_32 -O2 -g -std=gnu99 -pthread -Wall -no-pie -DCAN_BUILD_32 -DCAN_BUILD_64 test_FCOMI.c -lrt -ldl -lm gcc -m32 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/test_FISTTP_32 -O2 -g -std=gnu99 -pthread -Wall -no-pie -DCAN_BUILD_32 -DCAN_BUILD_64 test_FISTTP.c -lrt -ldl -lm gcc -m32 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/vdso_restorer_32 -O2 -g -std=gnu99 -pthread -Wall -no-pie -DCAN_BUILD_32 -DCAN_BUILD_64 vdso_restorer.c -lrt -ldl -lm gcc -m32 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/ldt_gdt_32 -O2 -g -std=gnu99 -pthread -Wall -no-pie -DCAN_BUILD_32 -DCAN_BUILD_64 ldt_gdt.c -lrt -ldl -lm gcc -m32 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/ptrace_syscall_32 -O2 -g -std=gnu99 -pthread -Wall -no-pie -DCAN_BUILD_32 -DCAN_BUILD_64 ptrace_syscall.c raw_syscall_helper_32.S -lrt -ldl -lm gcc -m64 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/single_step_syscall_64 -O2 -g -std=gnu99 -pthread -Wall -no-pie -DCAN_BUILD_32 -DCAN_BUILD_64 single_step_syscall.c -lrt -ldl gcc -m64 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/sysret_ss_attrs_64 -O2 -g -std=gnu99 -pthread -Wall -no-pie -DCAN_BUILD_32 -DCAN_BUILD_64 sysret_ss_attrs.c thunks.S -lrt -ldl gcc -m64 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/syscall_nt_64 -O2 -g -std=gnu99 -pthread -Wall -no-pie -DCAN_BUILD_32 -DCAN_BUILD_64 syscall_nt.c -lrt -ldl gcc -m64 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/test_mremap_vdso_64 -O2 -g -std=gnu99 -pthread -Wall -no-pie -DCAN_BUILD_32 -DCAN_BUILD_64 test_mremap_vdso.c -lrt -ldl gcc -m64 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/check_initial_reg_state_64 -O2 -g -std=gnu99 -pthread -Wall -no-pie -Wl,-ereal_start -static -DCAN_BUILD_32 -DCAN_BUILD_64 check_initial_reg_state.c -lrt -ldl gcc -m64 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/sigreturn_64 -O2 -g -std=gnu99 -pthread -Wall -no-pie -DCAN_BUILD_32 -DCAN_BUILD_64 sigreturn.c -lrt -ldl gcc -m64 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/iopl_64 -O2 -g -std=gnu99 -pthread -Wall -no-pie -DCAN_BUILD_32 -DCAN_BUILD_64 iopl.c -lrt -ldl gcc -m64 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/ioperm_64 -O2 -g -std=gnu99 -pthread -Wall -no-pie -DCAN_BUILD_32 -DCAN_BUILD_64 ioperm.c -lrt -ldl gcc -m64 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/protection_keys_64 -O2 -g -std=gnu99 -pthread -Wall -no-pie -DCAN_BUILD_32 -DCAN_BUILD_64 protection_keys.c -lrt -ldl gcc -m64 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/test_vdso_64 -O2 -g -std=gnu99 -pthread -Wall -no-pie -DCAN_BUILD_32 -DCAN_BUILD_64 test_vdso.c -lrt -ldl gcc -m64 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/test_vsyscall_64 -O2 -g -std=gnu99 -pthread -Wall -no-pie -DCAN_BUILD_32 -DCAN_BUILD_64 test_vsyscall.c -lrt -ldl gcc -m64 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/mov_ss_trap_64 -O2 -g -std=gnu99 -pthread -Wall -no-pie -DCAN_BUILD_32 -DCAN_BUILD_64 mov_ss_trap.c -lrt -ldl gcc -m64 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/syscall_arg_fault_64 -O2 -g -std=gnu99 -pthread -Wall -no-pie -DCAN_BUILD_32 -DCAN_BUILD_64 syscall_arg_fault.c -lrt -ldl gcc -m64 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/fsgsbase_64 -O2 -g -std=gnu99 -pthread -Wall -no-pie -DCAN_BUILD_32 -DCAN_BUILD_64 fsgsbase.c -lrt -ldl gcc -m64 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/sysret_rip_64 -O2 -g -std=gnu99 -pthread -Wall -no-pie -DCAN_BUILD_32 -DCAN_BUILD_64 sysret_rip.c -lrt -ldl gcc -m64 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/syscall_numbering_64 -O2 -g -std=gnu99 -pthread -Wall -no-pie -DCAN_BUILD_32 -DCAN_BUILD_64 syscall_numbering.c -lrt -ldl gcc -m64 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/ldt_gdt_64 -O2 -g -std=gnu99 -pthread -Wall -no-pie -DCAN_BUILD_32 -DCAN_BUILD_64 ldt_gdt.c -lrt -ldl gcc -m64 -o /usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86/ptrace_syscall_64 -O2 -g -std=gnu99 -pthread -Wall -no-pie -DCAN_BUILD_32 -DCAN_BUILD_64 ptrace_syscall.c -lrt -ldl TAP version 13 1..40 # selftests: x86: single_step_syscall_32 # [RUN] Set TF and check nop # [OK] Survived with TF set and 14 traps # [RUN] Set TF and check int80 # [OK] Survived with TF set and 14 traps # [RUN] Set TF and check a fast syscall # [OK] Survived with TF set and 43 traps # [RUN] Fast syscall with TF cleared # [OK] Nothing unexpected happened # [RUN] Set TF and check SYSENTER # Got SIGSEGV with RIP=f7f47569, TF=256 # [RUN] Fast syscall with TF cleared # [OK] Nothing unexpected happened ok 1 selftests: x86: single_step_syscall_32 # selftests: x86: sysret_ss_attrs_32 # [RUN] Syscalls followed by SS validation # [OK] We survived ok 2 selftests: x86: sysret_ss_attrs_32 # selftests: x86: syscall_nt_32 # [RUN] Set NT and issue a syscall # [OK] The syscall worked and flags are still set # [RUN] Set NT|TF and issue a syscall # [OK] The syscall worked and flags are still set ok 3 selftests: x86: syscall_nt_32 # selftests: x86: test_mremap_vdso_32 # AT_SYSINFO_EHDR is 0xf7fbb000 # [NOTE] Moving vDSO: [0xf7fbb000, 0xf7fbc000] -> [0xf7fb4000, 0xf7fb5000] # [NOTE] vDSO partial move failed, will try with bigger size # [NOTE] Moving vDSO: [0xf7fbb000, 0xf7fbd000] -> [0xf7fb3000, 0xf7fb5000] # [OK] ok 4 selftests: x86: test_mremap_vdso_32 # selftests: x86: check_initial_reg_state_32 # [OK] All GPRs except SP are 0 # [OK] FLAGS is 0x202 ok 5 selftests: x86: check_initial_reg_state_32 # selftests: x86: sigreturn_32 # [OK] set_thread_area refused 16-bit data # [OK] set_thread_area refused 16-bit data # [RUN] Valid sigreturn: 64-bit CS (33), 32-bit SS (2b, GDT) # [OK] all registers okay # [RUN] Valid sigreturn: 32-bit CS (23), 32-bit SS (2b, GDT) # [OK] all registers okay # [RUN] Valid sigreturn: 16-bit CS (37), 32-bit SS (2b, GDT) # [OK] all registers okay # [RUN] Valid sigreturn: 64-bit CS (33), 16-bit SS (3f) # [OK] all registers okay # [RUN] Valid sigreturn: 32-bit CS (23), 16-bit SS (3f) # [OK] all registers okay # [RUN] Valid sigreturn: 16-bit CS (37), 16-bit SS (3f) # [OK] all registers okay # [RUN] 64-bit CS (33), bogus SS (47) # [OK] Got #GP(0x0) (i.e. Segmentation fault) # [RUN] 32-bit CS (23), bogus SS (47) # [OK] Got #GP(0x0) (i.e. Segmentation fault) # [RUN] 16-bit CS (37), bogus SS (47) # [OK] Got #GP(0x0) (i.e. Segmentation fault) # [RUN] 64-bit CS (33), bogus SS (23) # [OK] Got #GP(0x20) (i.e. GDT index 4, Segmentation fault) # [RUN] 32-bit CS (23), bogus SS (23) # [OK] Got #GP(0x20) (i.e. GDT index 4, Segmentation fault) # [RUN] 16-bit CS (37), bogus SS (23) # [OK] Got #GP(0x20) (i.e. GDT index 4, Segmentation fault) # [RUN] 32-bit CS (4f), bogus SS (2b) # [OK] Got #NP(0x4c) (i.e. LDT index 9, Bus error) # [RUN] 32-bit CS (23), bogus SS (57) # [OK] Got #GP(0x0) (i.e. Segmentation fault) ok 6 selftests: x86: sigreturn_32 # selftests: x86: iopl_32 # [OK] CLI faulted # [OK] STI faulted # [OK] outb to 0x80 worked # [OK] outb to 0x80 worked # [OK] outb to 0xed failed # child: set IOPL to 3 # [RUN] child: write to 0x80 # [OK] CLI faulted # [OK] STI faulted # [OK] outb to 0x80 worked # [OK] outb to 0x80 worked # [OK] outb to 0xed failed # [OK] Child succeeded # [RUN] parent: write to 0x80 (should fail) # [OK] outb to 0x80 failed # [OK] CLI faulted # [OK] STI faulted # iopl(3) # Drop privileges # [RUN] iopl(3) unprivileged but with IOPL==3 # [RUN] iopl(0) unprivileged # [RUN] iopl(3) unprivileged # [OK] Failed as expected ok 7 selftests: x86: iopl_32 # selftests: x86: ioperm_32 # [OK] outb to 0x80 failed # [OK] outb to 0xed failed # [RUN] enable 0x80 # [OK] outb to 0x80 worked # [OK] outb to 0xed failed # [RUN] disable 0x80 # [OK] outb to 0x80 failed # [OK] outb to 0xed failed # [RUN] child: check that we inherited permissions # [OK] outb to 0x80 worked # [OK] outb to 0xed failed # [RUN] child: Extend permissions to 0x81 # [RUN] child: Drop permissions to 0x80 # [OK] outb to 0x80 failed # [OK] outb to 0x80 failed # [OK] outb to 0xed failed # [RUN] enable 0x80 # [OK] outb to 0x80 worked # [OK] outb to 0xed failed # [RUN] disable 0x80 # [OK] outb to 0x80 failed # [OK] outb to 0xed failed # [OK] Child succeeded # Verify that unsharing the bitmap worked # [OK] outb to 0x80 worked # Drop privileges # [RUN] disable 0x80 # [OK] it worked # [RUN] enable 0x80 again # [OK] it failed ok 8 selftests: x86: ioperm_32 # selftests: x86: protection_keys_32 # has pku: 0 # running PKEY tests for unsupported CPU/OS ok 9 selftests: x86: protection_keys_32 # selftests: x86: test_vdso_32 # Warning: failed to find getcpu in vDSO # [RUN] Testing clock_gettime for clock CLOCK_REALTIME (0)... # 1592703243.509739377 1592703243.509743541 1592703243.509743738 # [RUN] Testing clock_gettime for clock CLOCK_MONOTONIC (1)... # 37.692899478 37.692899892 37.692900056 # [RUN] Testing clock_gettime for clock CLOCK_PROCESS_CPUTIME_ID (2)... # 0.000721539 0.000722258 0.000722811 # [RUN] Testing clock_gettime for clock CLOCK_THREAD_CPUTIME_ID (3)... # 0.000724733 0.000725262 0.000725781 # [RUN] Testing clock_gettime for clock CLOCK_MONOTONIC_RAW (4)... # 36.495366960 36.495367323 36.495367534 # [RUN] Testing clock_gettime for clock CLOCK_REALTIME_COARSE (5)... # 1592703243.509355978 1592703243.509355978 1592703243.509355978 # [RUN] Testing clock_gettime for clock CLOCK_MONOTONIC_COARSE (6)... # 37.692508963 37.692508963 37.692508963 # [RUN] Testing clock_gettime for clock CLOCK_BOOTTIME (7)... # 37.692913025 37.692913368 37.692913525 # [RUN] Testing clock_gettime for clock CLOCK_REALTIME_ALARM (8)... # 1592703243.509762027 1592703243.509762534 1592703243.509763023 # [RUN] Testing clock_gettime for clock CLOCK_BOOTTIME_ALARM (9)... # 37.692917482 37.692917992 37.692918488 # [RUN] Testing clock_gettime for clock CLOCK_SGI_CYCLE (10)... # [OK] No such clock. # [RUN] Testing clock_gettime for clock CLOCK_TAI (11)... # 1592703243.509768408 1592703243.509768752 1592703243.509768910 # [RUN] Testing clock_gettime for clock invalid (-1)... # [OK] No such clock. # [RUN] Testing clock_gettime for clock invalid (-2147483648)... # [OK] No such clock. # [RUN] Testing clock_gettime for clock invalid (2147483647)... # [OK] No such clock. # [RUN] Testing gettimeofday... # 1592703243.509773 1592703243.509774 1592703243.509774 # [OK] timezones match: minuteswest=-480, dsttime=0 # [RUN] Testing getcpu... # [OK] CPU 0: syscall: cpu 0, node 0 # [OK] CPU 1: syscall: cpu 1, node 0 # [OK] CPU 2: syscall: cpu 2, node 0 # [OK] CPU 3: syscall: cpu 3, node 0 # [OK] CPU 4: syscall: cpu 4, node 0 # [OK] CPU 5: syscall: cpu 5, node 0 # [OK] CPU 6: syscall: cpu 6, node 0 # [OK] CPU 7: syscall: cpu 7, node 0 ok 10 selftests: x86: test_vdso_32 # selftests: x86: test_vsyscall_32 # [NOTE] failed to find getcpu in vDSO # [RUN] test gettimeofday() # vDSO time offsets: 0.000004 0.000000 # [OK] vDSO gettimeofday()'s timeval was okay # [RUN] test time() # [OK] vDSO time() is okay # [RUN] getcpu() on CPU 0 # [RUN] getcpu() on CPU 1 ok 11 selftests: x86: test_vsyscall_32 # selftests: x86: mov_ss_trap_32 # SS = 0x2b, &SS = 0x0x804d11c # PR_SET_PTRACER_ANY succeeded # Set up a watchpoint # DR0 = 804d11c, DR1 = 8048863, DR7 = 7000a # SS = 0x2b, &SS = 0x0x804d11c # PR_SET_PTRACER_ANY succeeded # Set up a watchpoint # [RUN] Read from watched memory (should get SIGTRAP) # Got SIGTRAP with RIP=80486ed, EFLAGS.RF=0 # [RUN] MOV SS; INT3 # Got SIGTRAP with RIP=80486fe, EFLAGS.RF=0 # [RUN] MOV SS; INT 3 # Got SIGTRAP with RIP=8048710, EFLAGS.RF=0 # [RUN] MOV SS; CS CS INT3 # Got SIGTRAP with RIP=8048723, EFLAGS.RF=0 # [RUN] MOV SS; CSx14 INT3 # Got SIGTRAP with RIP=8048742, EFLAGS.RF=0 # [RUN] MOV SS; INT 4 # Got SIGSEGV with RIP=804876c # [RUN] MOV SS; INTO # Got SIGTRAP with RIP=804879c, EFLAGS.RF=0 # [RUN] MOV SS; ICEBP # Got SIGTRAP with RIP=8048b11, EFLAGS.RF=0 # [RUN] MOV SS; CLI # Got SIGSEGV with RIP=8048ad6 # [RUN] MOV SS; #PF # Got SIGSEGV with RIP=8048a98 # [RUN] MOV SS; INT 1 # Got SIGSEGV with RIP=8048843 # [RUN] MOV SS; breakpointed NOP # Got SIGTRAP with RIP=8048864, EFLAGS.RF=0 # [RUN] MOV SS; SYSENTER # Got SIGSEGV with RIP=f7f3c569 # [RUN] MOV SS; INT $0x80 # [OK] I aten't dead ok 12 selftests: x86: mov_ss_trap_32 # selftests: x86: syscall_arg_fault_32 # [RUN] SYSENTER with invalid state # [OK] Seems okay # [RUN] SYSCALL with invalid state # [SKIP] Illegal instruction # [RUN] SYSENTER with TF and invalid state # [OK] Seems okay # [RUN] SYSCALL with TF and invalid state # [SKIP] Illegal instruction ok 13 selftests: x86: syscall_arg_fault_32 # selftests: x86: entry_from_vm86_32 # [RUN] #BR from vm86 mode # [SKIP] vm86 not supported # [RUN] SYSENTER from vm86 mode # [SKIP] vm86 not supported # [RUN] SYSCALL from vm86 mode # [SKIP] vm86 not supported # [RUN] STI with VIP set from vm86 mode # [SKIP] vm86 not supported # [RUN] POPF with VIP set and IF clear from vm86 mode # [SKIP] vm86 not supported # [RUN] POPF with VIP and IF set from vm86 mode # [SKIP] vm86 not supported # [RUN] POPF with VIP clear and IF set from vm86 mode # [SKIP] vm86 not supported # [RUN] INT3 from vm86 mode # [SKIP] vm86 not supported # [RUN] int80 from vm86 mode # [SKIP] vm86 not supported # [RUN] UMIP tests from vm86 mode # [SKIP] vm86 not supported # [INFO] Result from SMSW:[0x0000] # [INFO] Result from SIDT: limit[0x0000]base[0x00000000] # [INFO] Result from SGDT: limit[0x0000]base[0x00000000] # [PASS] All the results from SMSW are identical. # [PASS] All the results from SGDT are identical. # [PASS] All the results from SIDT are identical. # [RUN] STR instruction from vm86 mode # [SKIP] vm86 not supported # [RUN] SLDT instruction from vm86 mode # [SKIP] vm86 not supported # [RUN] Execute null pointer from vm86 mode # [SKIP] vm86 not supported # [RUN] #BR from vm86 mode # [SKIP] vm86 not supported # [RUN] SYSENTER from vm86 mode # [SKIP] vm86 not supported # [RUN] SYSCALL from vm86 mode # [SKIP] vm86 not supported # [RUN] STI with VIP set from vm86 mode # [SKIP] vm86 not supported # [RUN] POPF with VIP set and IF clear from vm86 mode # [SKIP] vm86 not supported # [RUN] POPF with VIP and IF set from vm86 mode # [SKIP] vm86 not supported # [RUN] POPF with VIP clear and IF set from vm86 mode # [SKIP] vm86 not supported # [RUN] INT3 from vm86 mode # [SKIP] vm86 not supported # [RUN] int80 from vm86 mode # [SKIP] vm86 not supported # [RUN] UMIP tests from vm86 mode # [SKIP] vm86 not supported # [INFO] Result from SMSW:[0x0000] # [INFO] Result from SIDT: limit[0x0000]base[0x00000000] # [INFO] Result from SGDT: limit[0x0000]base[0x00000000] # [PASS] All the results from SMSW are identical. # [PASS] All the results from SGDT are identical. # [PASS] All the results from SIDT are identical. # [RUN] STR instruction from vm86 mode # [SKIP] vm86 not supported # [RUN] SLDT instruction from vm86 mode # [SKIP] vm86 not supported # [RUN] Execute null pointer from vm86 mode # [SKIP] vm86 not supported ok 14 selftests: x86: entry_from_vm86_32 # selftests: x86: test_syscall_vdso_32 # [RUN] Executing 6-argument 32-bit syscall via VDSO # [WARN] Flags before=0000000000200ed7 id 0 00 o d i s z 0 a 0 p 1 c # [WARN] Flags after=0000000000200682 id 0 00 d i s 0 0 1 # [WARN] Flags change=0000000000000855 0 00 o z 0 a 0 p 0 c # [OK] Arguments are preserved across syscall # [NOTE] R11 has changed:0000000000200682 - assuming clobbered by SYSRET insn # [OK] R8..R15 did not leak kernel data # [RUN] Executing 6-argument 32-bit syscall via INT 80 # [OK] Arguments are preserved across syscall # [OK] R8..R15 did not leak kernel data # [RUN] Executing 6-argument 32-bit syscall via VDSO # [WARN] Flags before=0000000000200ed7 id 0 00 o d i s z 0 a 0 p 1 c # [WARN] Flags after=0000000000200686 id 0 00 d i s 0 0 p 1 # [WARN] Flags change=0000000000000851 0 00 o z 0 a 0 0 c # [OK] Arguments are preserved across syscall # [NOTE] R11 has changed:0000000000200686 - assuming clobbered by SYSRET insn # [OK] R8..R15 did not leak kernel data # [RUN] Executing 6-argument 32-bit syscall via INT 80 # [OK] Arguments are preserved across syscall # [OK] R8..R15 did not leak kernel data # [RUN] Running tests under ptrace ok 15 selftests: x86: test_syscall_vdso_32 # selftests: x86: unwind_vdso_32 # AT_SYSINFO is 0xf7eed560 # [OK] AT_SYSINFO maps to linux-gate.so.1, loaded at 0x0xf7eed000 # [RUN] Set TF and check a fast syscall # In vsyscall at 0xf7eed560, returning to 0xf7ca5737 # SIGTRAP at 0xf7eed560 # 0xf7eed560 # 0xf7ca5737 # [OK] NR = 20, args = 1, 2, 3, 4, 5, 6 # SIGTRAP at 0xf7eed561 # 0xf7eed561 # 0xf7ca5737 # [OK] NR = 20, args = 1, 2, 3, 4, 5, 6 # SIGTRAP at 0xf7eed562 # 0xf7eed562 # 0xf7ca5737 # [OK] NR = 20, args = 1, 2, 3, 4, 5, 6 # SIGTRAP at 0xf7eed563 # 0xf7eed563 # 0xf7ca5737 # [OK] NR = 20, args = 1, 2, 3, 4, 5, 6 # SIGTRAP at 0xf7eed565 # 0xf7eed565 # 0xf7ca5737 # [OK] NR = 20, args = 1, 2, 3, 4, 5, 6 # SIGTRAP at 0xf7eed56a # 0xf7eed56a # 0xf7ca5737 # [OK] NR = 1685, args = 1, 2, 3, 4, 5, 6 # SIGTRAP at 0xf7eed56b # 0xf7eed56b # 0xf7ca5737 # [OK] NR = 1685, args = 1, 2, 3, 4, 5, 6 # SIGTRAP at 0xf7eed56c # 0xf7eed56c # 0xf7ca5737 # [OK] NR = 1685, args = 1, 2, 3, 4, 5, 6 # Vsyscall is done # [OK] All is well ok 16 selftests: x86: unwind_vdso_32 # selftests: x86: test_FCMOV_32 # [RUN] Testing fcmovCC instructions # [OK] fcmovCC ok 17 selftests: x86: test_FCMOV_32 # selftests: x86: test_FCOMI_32 # [RUN] Testing f[u]comi[p] instructions # [OK] f[u]comi[p] ok 18 selftests: x86: test_FCOMI_32 # selftests: x86: test_FISTTP_32 # [RUN] Testing fisttp instructions # [OK] fisttp ok 19 selftests: x86: test_FISTTP_32 # selftests: x86: vdso_restorer_32 # [RUN] Raise a signal, SA_SIGINFO, sa.restorer == NULL # [OK] SA_SIGINFO handler returned successfully # [RUN] Raise a signal, !SA_SIGINFO, sa.restorer == NULL # [OK] !SA_SIGINFO handler returned successfully ok 20 selftests: x86: vdso_restorer_32 # selftests: x86: ldt_gdt_32 # [NOTE] set_thread_area is available; will use GDT index 13 # [OK] LDT entry 0 has AR 0x0040FB00 and limit 0x0000000A # [OK] LDT entry 0 has AR 0x00C0FB00 and limit 0x0000AFFF # [OK] LDT entry 1 is invalid # [OK] LDT entry 2 has AR 0x00C0FB00 and limit 0x0000AFFF # [OK] LDT entry 1 is invalid # [OK] LDT entry 2 has AR 0x00C0FB00 and limit 0x0000AFFF # [OK] LDT entry 2 has AR 0x00D0FB00 and limit 0x0000AFFF # [OK] LDT entry 2 has AR 0x00D07B00 and limit 0x0000AFFF # [OK] LDT entry 2 has AR 0x00907B00 and limit 0x0000AFFF # [OK] LDT entry 2 has AR 0x00D07300 and limit 0x0000AFFF # [OK] LDT entry 2 has AR 0x00D07100 and limit 0x0000AFFF # [OK] LDT entry 2 has AR 0x00D07500 and limit 0x0000AFFF # [OK] LDT entry 2 has AR 0x00507700 and limit 0x0000000A # [OK] LDT entry 2 has AR 0x00507F00 and limit 0x0000000A # [OK] LDT entry 2 has AR 0x00507D00 and limit 0x0000000A # [OK] LDT entry 2 has AR 0x00507B00 and limit 0x0000000A # [OK] LDT entry 2 has AR 0x00507900 and limit 0x0000000A # [RUN] Test fork # [OK] LDT entry 2 has AR 0x00507900 and limit 0x0000000A # [OK] LDT entry 1 is invalid # [OK] LDT entry 0 is invalid # [NOTE] set_thread_area is available; will use GDT index 13 # [OK] LDT entry 0 has AR 0x0040FB00 and limit 0x0000000A # [OK] LDT entry 0 has AR 0x00C0FB00 and limit 0x0000AFFF # [OK] LDT entry 1 is invalid # [OK] LDT entry 2 has AR 0x00C0FB00 and limit 0x0000AFFF # [OK] LDT entry 1 is invalid # [OK] LDT entry 2 has AR 0x00C0FB00 and limit 0x0000AFFF # [OK] LDT entry 2 has AR 0x00D0FB00 and limit 0x0000AFFF # [OK] LDT entry 2 has AR 0x00D07B00 and limit 0x0000AFFF # [OK] LDT entry 2 has AR 0x00907B00 and limit 0x0000AFFF # [OK] LDT entry 2 has AR 0x00D07300 and limit 0x0000AFFF # [OK] LDT entry 2 has AR 0x00D07100 and limit 0x0000AFFF # [OK] LDT entry 2 has AR 0x00D07500 and limit 0x0000AFFF # [OK] LDT entry 2 has AR 0x00507700 and limit 0x0000000A # [OK] LDT entry 2 has AR 0x00507F00 and limit 0x0000000A # [OK] LDT entry 2 has AR 0x00507D00 and limit 0x0000000A # [OK] LDT entry 2 has AR 0x00507B00 and limit 0x0000000A # [OK] LDT entry 2 has AR 0x00507900 and limit 0x0000000A # [RUN] Test fork # [OK] Child succeeded # [RUN] Test size # [DONE] Size test # [OK] modify_ldt failure 22 # [OK] LDT entry 0 has AR 0x0000F300 and limit 0x00000000 # [OK] LDT entry 0 has AR 0x00007300 and limit 0x00000000 # [OK] LDT entry 0 has AR 0x0000F100 and limit 0x00000000 # [OK] LDT entry 0 has AR 0x00007300 and limit 0x00000000 # [OK] LDT entry 0 has AR 0x00007100 and limit 0x00000001 # [OK] LDT entry 0 has AR 0x00007100 and limit 0x00000000 # [OK] LDT entry 0 is invalid # [OK] LDT entry 0 has AR 0x0040F300 and limit 0x000FFFFF # [OK] GDT entry 13 has AR 0x0040F300 and limit 0x000FFFFF # [OK] LDT entry 0 has AR 0x00C0F300 and limit 0xFFFFFFFF # [OK] GDT entry 13 has AR 0x00C0F300 and limit 0xFFFFFFFF # [OK] LDT entry 0 has AR 0x00C0F100 and limit 0xFFFFFFFF # [OK] GDT entry 13 has AR 0x00C0F100 and limit 0xFFFFFFFF # [OK] LDT entry 0 has AR 0x00C0F700 and limit 0xFFFFFFFF # [OK] GDT entry 13 has AR 0x00C0F700 and limit 0xFFFFFFFF # [OK] LDT entry 0 has AR 0x00C0F500 and limit 0xFFFFFFFF # [OK] GDT entry 13 has AR 0x00C0F500 and limit 0xFFFFFFFF # [OK] LDT entry 0 is invalid # [RUN] Cross-CPU LDT invalidation # [OK] All 5 iterations succeeded # [RUN] Test exec # [OK] LDT entry 0 has AR 0x0040FB00 and limit 0x0000002A # [OK] Child succeeded # [OK] Invalidate DS with set_thread_area: new DS = 0x0 # [OK] Invalidate ES with set_thread_area: new ES = 0x0 # [OK] Invalidate FS with set_thread_area: new FS = 0x0 # [OK] Invalidate GS with set_thread_area: new GS = 0x0 ok 21 selftests: x86: ldt_gdt_32 # selftests: x86: ptrace_syscall_32 # [RUN] Check int80 return regs # [OK] getpid() preserves regs # [OK] kill(getpid(), SIGUSR1) preserves regs # [RUN] Check AT_SYSINFO return regs # [OK] getpid() preserves regs # [OK] kill(getpid(), SIGUSR1) preserves regs # [RUN] ptrace-induced syscall restart # [RUN] SYSEMU # [OK] Initial nr and args are correct # [RUN] Restart the syscall (ip = 0xf7f11569) # [OK] Restarted nr and args are correct # [RUN] Change nr and args and restart the syscall (ip = 0xf7f11569) # [OK] Replacement nr and args are correct # [OK] Child exited cleanly # [RUN] kernel syscall restart under ptrace # [RUN] SYSCALL # [OK] Initial nr and args are correct # [RUN] SYSCALL # [OK] Args after SIGUSR1 are correct (ax = -514) # [OK] Child got SIGUSR1 # [RUN] Step again # [OK] pause(2) restarted correctly ok 22 selftests: x86: ptrace_syscall_32 # selftests: x86: single_step_syscall_64 # [RUN] Set TF and check nop # [OK] Survived with TF set and 9 traps # [RUN] Set TF and check syscall-less opportunistic sysret # [OK] Survived with TF set and 12 traps # [RUN] Set TF and check int80 # [OK] Survived with TF set and 9 traps # [RUN] Set TF and check a fast syscall # [OK] Survived with TF set and 22 traps # [RUN] Fast syscall with TF cleared # [OK] Nothing unexpected happened # [RUN] Set TF and check SYSENTER # Got SIGSEGV with RIP=fb0dc569, TF=256 # [RUN] Fast syscall with TF cleared # [OK] Nothing unexpected happened ok 23 selftests: x86: single_step_syscall_64 # selftests: x86: sysret_ss_attrs_64 # [RUN] Syscalls followed by SS validation # [OK] We survived ok 24 selftests: x86: sysret_ss_attrs_64 # selftests: x86: syscall_nt_64 # [RUN] Set NT and issue a syscall # [OK] The syscall worked and flags are still set # [RUN] Set NT|TF and issue a syscall # [OK] The syscall worked and flags are still set ok 25 selftests: x86: syscall_nt_64 # selftests: x86: test_mremap_vdso_64 # AT_SYSINFO_EHDR is 0x7ffd41fec000 # [NOTE] Moving vDSO: [0x7ffd41fec000, 0x7ffd41fed000] -> [0x7f1297c20000, 0x7f1297c21000] # [NOTE] vDSO partial move failed, will try with bigger size # [NOTE] Moving vDSO: [0x7ffd41fec000, 0x7ffd41fee000] -> [0x7f1297bf7000, 0x7f1297bf9000] # [OK] ok 26 selftests: x86: test_mremap_vdso_64 # selftests: x86: check_initial_reg_state_64 # [OK] All GPRs except SP are 0 # [OK] FLAGS is 0x202 ok 27 selftests: x86: check_initial_reg_state_64 # selftests: x86: sigreturn_64 # [OK] set_thread_area refused 16-bit data # [OK] set_thread_area refused 16-bit data # [RUN] Valid sigreturn: 64-bit CS (33), 32-bit SS (2b, GDT) # [OK] all registers okay # [RUN] Valid sigreturn: 32-bit CS (23), 32-bit SS (2b, GDT) # [NOTE] SP: 8badf00d5aadc0de -> 5aadc0de # [OK] all registers okay # [RUN] Valid sigreturn: 16-bit CS (37), 32-bit SS (2b, GDT) # [NOTE] SP: 8badf00d5aadc0de -> 5aadc0de # [OK] all registers okay # [RUN] Valid sigreturn: 64-bit CS (33), 16-bit SS (3f) # [OK] all registers okay # [RUN] Valid sigreturn: 32-bit CS (23), 16-bit SS (3f) # [NOTE] SP: 8badf00d5aadc0de -> 5aadc0de # [OK] all registers okay # [RUN] Valid sigreturn: 16-bit CS (37), 16-bit SS (3f) # [NOTE] SP: 8badf00d5aadc0de -> 5aadc0de # [OK] all registers okay # [RUN] Valid sigreturn: 32-bit CS (23), 32-bit SS (2b, GDT) # Corrupting SS on return to 64-bit mode # [NOTE] SP: 8badf00d5aadc0de -> 5aadc0de # [OK] all registers okay # [RUN] Valid sigreturn: 32-bit CS (23), 16-bit SS (3f) # Corrupting SS on return to 64-bit mode # [NOTE] SP: 8badf00d5aadc0de -> 5aadc0de # [OK] all registers okay # [RUN] 64-bit CS (33), bogus SS (47) # [OK] Got #GP(0x0) (i.e. Segmentation fault) # [RUN] 32-bit CS (23), bogus SS (47) # [OK] Got #GP(0x0) (i.e. Segmentation fault) # [RUN] 16-bit CS (37), bogus SS (47) # [OK] Got #GP(0x0) (i.e. Segmentation fault) # [RUN] 64-bit CS (33), bogus SS (33) # [OK] Got #GP(0x30) (i.e. GDT index 6, Segmentation fault) # [RUN] 32-bit CS (23), bogus SS (33) # [OK] Got #GP(0x30) (i.e. GDT index 6, Segmentation fault) # [RUN] 16-bit CS (37), bogus SS (33) # [OK] Got #GP(0x30) (i.e. GDT index 6, Segmentation fault) # [RUN] 32-bit CS (4f), bogus SS (2b) # [OK] Got #NP(0x4c) (i.e. LDT index 9, Bus error) # [RUN] 32-bit CS (23), bogus SS (57) # [OK] Got #GP(0x0) (i.e. Segmentation fault) # [RUN] Clear UC_STRICT_RESTORE_SS and corrupt SS # [OK] It worked ok 28 selftests: x86: sigreturn_64 # selftests: x86: iopl_64 # [OK] CLI faulted # [OK] STI faulted # [OK] outb to 0x80 worked # [OK] outb to 0x80 worked # [OK] outb to 0xed failed # child: set IOPL to 3 # [RUN] child: write to 0x80 # [OK] CLI faulted # [OK] STI faulted # [OK] outb to 0x80 worked # [OK] outb to 0x80 worked # [OK] outb to 0xed failed # [OK] Child succeeded # [RUN] parent: write to 0x80 (should fail) # [OK] outb to 0x80 failed # [OK] CLI faulted # [OK] STI faulted # iopl(3) # Drop privileges # [RUN] iopl(3) unprivileged but with IOPL==3 # [RUN] iopl(0) unprivileged # [RUN] iopl(3) unprivileged # [OK] Failed as expected ok 29 selftests: x86: iopl_64 # selftests: x86: ioperm_64 # [OK] outb to 0x80 failed # [OK] outb to 0xed failed # [RUN] enable 0x80 # [OK] outb to 0x80 worked # [OK] outb to 0xed failed # [RUN] disable 0x80 # [OK] outb to 0x80 failed # [OK] outb to 0xed failed # [RUN] child: check that we inherited permissions # [OK] outb to 0x80 worked # [OK] outb to 0xed failed # [RUN] child: Extend permissions to 0x81 # [RUN] child: Drop permissions to 0x80 # [OK] outb to 0x80 failed # [OK] outb to 0x80 failed # [OK] outb to 0xed failed # [RUN] enable 0x80 # [OK] outb to 0x80 worked # [OK] outb to 0xed failed # [RUN] disable 0x80 # [OK] outb to 0x80 failed # [OK] outb to 0xed failed # [OK] Child succeeded # Verify that unsharing the bitmap worked # [OK] outb to 0x80 worked # Drop privileges # [RUN] disable 0x80 # [OK] it worked # [RUN] enable 0x80 again # [OK] it failed ok 30 selftests: x86: ioperm_64 # selftests: x86: protection_keys_64 # has pku: 0 # running PKEY tests for unsupported CPU/OS ok 31 selftests: x86: protection_keys_64 # selftests: x86: test_vdso_64 # [RUN] Testing clock_gettime for clock CLOCK_REALTIME (0)... # 1592703243.874277468 1592703243.874279945 1592703243.874280100 # [RUN] Testing clock_gettime for clock CLOCK_MONOTONIC (1)... # 38.057434990 38.057435414 38.057435549 # [RUN] Testing clock_gettime for clock CLOCK_PROCESS_CPUTIME_ID (2)... # 0.000511917 0.000512569 0.000513104 # [RUN] Testing clock_gettime for clock CLOCK_THREAD_CPUTIME_ID (3)... # 0.000514396 0.000514928 0.000515432 # [RUN] Testing clock_gettime for clock CLOCK_MONOTONIC_RAW (4)... # 36.859901097 36.859901462 36.859901594 # [RUN] Testing clock_gettime for clock CLOCK_REALTIME_COARSE (5)... # 1592703243.873355977 1592703243.873355977 1592703243.873355977 # [RUN] Testing clock_gettime for clock CLOCK_MONOTONIC_COARSE (6)... # 38.056508962 38.056508962 38.056508962 # [RUN] Testing clock_gettime for clock CLOCK_BOOTTIME (7)... # 38.057446213 38.057446568 38.057446697 # [RUN] Testing clock_gettime for clock CLOCK_REALTIME_ALARM (8)... # 1592703243.874294924 1592703243.874295411 1592703243.874295887 # [RUN] Testing clock_gettime for clock CLOCK_BOOTTIME_ALARM (9)... # 38.057449863 38.057450360 38.057450848 # [RUN] Testing clock_gettime for clock CLOCK_SGI_CYCLE (10)... # [OK] No such clock. # [RUN] Testing clock_gettime for clock CLOCK_TAI (11)... # 1592703243.874300587 1592703243.874300943 1592703243.874301081 # [RUN] Testing clock_gettime for clock invalid (-1)... # [OK] No such clock. # [RUN] Testing clock_gettime for clock invalid (-2147483648)... # [OK] No such clock. # [RUN] Testing clock_gettime for clock invalid (2147483647)... # [OK] No such clock. # [RUN] Testing gettimeofday... # 1592703243.874305 1592703243.874305 1592703243.874305 # [OK] timezones match: minuteswest=-480, dsttime=0 # [RUN] Testing getcpu... # [OK] CPU 0: syscall: cpu 0, node 0 vdso: cpu 0, node 0 vsyscall: cpu 0, node 0 # [OK] CPU 1: syscall: cpu 1, node 0 vdso: cpu 1, node 0 vsyscall: cpu 1, node 0 # [OK] CPU 2: syscall: cpu 2, node 0 vdso: cpu 2, node 0 vsyscall: cpu 2, node 0 # [OK] CPU 3: syscall: cpu 3, node 0 vdso: cpu 3, node 0 vsyscall: cpu 3, node 0 # [OK] CPU 4: syscall: cpu 4, node 0 vdso: cpu 4, node 0 vsyscall: cpu 4, node 0 # [OK] CPU 5: syscall: cpu 5, node 0 vdso: cpu 5, node 0 vsyscall: cpu 5, node 0 # [OK] CPU 6: syscall: cpu 6, node 0 vdso: cpu 6, node 0 vsyscall: cpu 6, node 0 # [OK] CPU 7: syscall: cpu 7, node 0 vdso: cpu 7, node 0 vsyscall: cpu 7, node 0 ok 32 selftests: x86: test_vdso_64 # selftests: x86: test_vsyscall_64 # vsyscall map: ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall] # vsyscall permissions are r-x # [RUN] test gettimeofday() # vDSO time offsets: 0.000002 0.000001 # [OK] vDSO gettimeofday()'s timeval was okay # vsyscall time offsets: 0.000003 0.000000 # [OK] vsyscall gettimeofday()'s timeval was okay # [RUN] test time() # [OK] vDSO time() is okay # [OK] vsyscall time() is okay # [RUN] getcpu() on CPU 0 # [OK] vDSO reported correct CPU # [OK] vDSO reported correct node # [OK] vsyscall reported correct CPU # [OK] vsyscall reported correct node # [RUN] getcpu() on CPU 1 # [OK] vDSO reported correct CPU # [OK] vDSO reported correct node # [OK] vsyscall reported correct CPU # [OK] vsyscall reported correct node # [RUN] Checking read access to the vsyscall page # [OK] We have read access # [RUN] process_vm_readv() from vsyscall page # [OK] It worked and read correct data # [RUN] checking that vsyscalls are emulated # [OK] vsyscalls are emulated (1 instructions in vsyscall page) ok 33 selftests: x86: test_vsyscall_64 # selftests: x86: mov_ss_trap_64 # SS = 0x2b, &SS = 0x0x604188 # PR_SET_PTRACER_ANY succeeded # Set up a watchpoint # DR0 = 604188, DR1 = 400a13, DR7 = 7000a # SS = 0x2b, &SS = 0x0x604188 # PR_SET_PTRACER_ANY succeeded # Set up a watchpoint # [RUN] Read from watched memory (should get SIGTRAP) # Got SIGTRAP with RIP=4008c8, EFLAGS.RF=0 # [RUN] MOV SS; INT3 # Got SIGTRAP with RIP=4008db, EFLAGS.RF=0 # [RUN] MOV SS; INT 3 # Got SIGTRAP with RIP=4008ef, EFLAGS.RF=0 # [RUN] MOV SS; CS CS INT3 # Got SIGTRAP with RIP=400904, EFLAGS.RF=0 # [RUN] MOV SS; CSx14 INT3 # Got SIGTRAP with RIP=400925, EFLAGS.RF=0 # [RUN] MOV SS; INT 4 # Got SIGSEGV with RIP=40094f # [RUN] MOV SS; ICEBP # Got SIGTRAP with RIP=400ca3, EFLAGS.RF=0 # [RUN] MOV SS; CLI # Got SIGSEGV with RIP=400c74 # [RUN] MOV SS; #PF # Got SIGSEGV with RIP=400c3f # [RUN] MOV SS; INT 1 # Got SIGSEGV with RIP=400c10 # [RUN] MOV SS; SYSCALL # [RUN] MOV SS; breakpointed NOP # Got SIGTRAP with RIP=400a14, EFLAGS.RF=0 # [RUN] MOV SS; SYSENTER # Got SIGSEGV with RIP=e29bd569 # [RUN] MOV SS; INT $0x80 # [OK] I aten't dead ok 34 selftests: x86: mov_ss_trap_64 # selftests: x86: syscall_arg_fault_64 # [RUN] SYSENTER with invalid state # [OK] Seems okay # [RUN] SYSCALL with invalid state # [OK] SYSCALL returned normally # [RUN] SYSENTER with TF and invalid state # [OK] Seems okay # [RUN] SYSCALL with TF and invalid state # [OK] SYSCALL returned normally ok 35 selftests: x86: syscall_arg_fault_64 # selftests: x86: fsgsbase_64 # FSGSBASE instructions are disabled # [RUN] ARCH_SET_GS to 0x0 # [OK] GSBASE was set as expected (selector 0x0) # [OK] ARCH_GET_GS worked as expected (selector 0x0) # [RUN] ARCH_SET_GS to 0x1 # [OK] GSBASE was set as expected (selector 0x0) # [OK] ARCH_GET_GS worked as expected (selector 0x0) # [RUN] ARCH_SET_GS to 0x200000000 # [OK] GSBASE was set as expected (selector 0x0) # [OK] ARCH_GET_GS worked as expected (selector 0x0) # [RUN] ARCH_SET_GS to 0x0 # [OK] GSBASE was set as expected (selector 0x0) # [OK] ARCH_GET_GS worked as expected (selector 0x0) # [RUN] ARCH_SET_GS to 0x200000000 # [OK] GSBASE was set as expected (selector 0x0) # [OK] ARCH_GET_GS worked as expected (selector 0x0) # [RUN] ARCH_SET_GS to 0x1 # [OK] GSBASE was set as expected (selector 0x0) # [OK] ARCH_GET_GS worked as expected (selector 0x0) # [RUN] ARCH_SET_GS to 0x0 then mov 0 to %gs # [OK] GSBASE is 0x0 # [RUN] ARCH_SET_GS to 0x1 then mov 0 to %gs # [OK] GSBASE is 0x0 # [RUN] ARCH_SET_GS to 0x200000000 then mov 0 to %gs # [OK] GSBASE is 0x0 # [RUN] ARCH_SET_GS to 0x0 then mov 0 to %gs and schedule # [OK] GSBASE is 0x0 # [RUN] ARCH_SET_GS to 0x1 then mov 0 to %gs and schedule # [OK] GSBASE is 0x0 # [RUN] ARCH_SET_GS to 0x200000000 then mov 0 to %gs and schedule # [OK] GSBASE is 0x0 # [RUN] ARCH_SET_GS(0x0), then schedule to 0x0 # other thread: ARCH_SET_GS(0x0) -- sel is 0x0 # [OK] GS/BASE remained 0x0/0x0 # [RUN] ARCH_SET_GS(0x0), then schedule to 0x0 # Before schedule, set selector to 0x1 # other thread: ARCH_SET_GS(0x0) -- sel is 0x0 # [OK] GS/BASE remained 0x1/0x0 # [RUN] ARCH_SET_GS(0x0), then schedule to 0x0 # Before schedule, set selector to 0x2 # other thread: ARCH_SET_GS(0x0) -- sel is 0x0 # [OK] GS/BASE remained 0x2/0x0 # [RUN] ARCH_SET_GS(0x0), then schedule to 0x0 # Before schedule, set selector to 0x3 # other thread: ARCH_SET_GS(0x0) -- sel is 0x0 # [OK] GS/BASE remained 0x3/0x0 # [RUN] ARCH_SET_GS(0x0), then schedule to 0x0 # Before schedule, set selector to 0x2b # other thread: ARCH_SET_GS(0x0) -- sel is 0x0 # [OK] GS/BASE remained 0x2b/0x0 # [RUN] ARCH_SET_GS(0x0), then schedule to 0xa1fa5f343cb85fa4 # other thread: ARCH_SET_GS(0x0) and clear gs -- sel is 0x0 # [OK] GS/BASE remained 0x0/0x0 # [RUN] ARCH_SET_GS(0x0), then schedule to 0xa1fa5f343cb85fa4 # Before schedule, set selector to 0x1 # other thread: ARCH_SET_GS(0x0) and clear gs -- sel is 0x0 # [OK] GS/BASE remained 0x1/0x0 # [RUN] ARCH_SET_GS(0x0), then schedule to 0xa1fa5f343cb85fa4 # Before schedule, set selector to 0x2 # other thread: ARCH_SET_GS(0x0) and clear gs -- sel is 0x0 # [OK] GS/BASE remained 0x2/0x0 # [RUN] ARCH_SET_GS(0x0), then schedule to 0xa1fa5f343cb85fa4 # Before schedule, set selector to 0x3 # other thread: ARCH_SET_GS(0x0) and clear gs -- sel is 0x0 # [OK] GS/BASE remained 0x3/0x0 # [RUN] ARCH_SET_GS(0x0), then schedule to 0xa1fa5f343cb85fa4 # Before schedule, set selector to 0x2b # other thread: ARCH_SET_GS(0x0) and clear gs -- sel is 0x0 # [OK] GS/BASE remained 0x2b/0x0 # [RUN] ARCH_SET_GS(0x0), then schedule to 0x1 # other thread: ARCH_SET_GS(0x1) -- sel is 0x0 # [OK] GS/BASE remained 0x0/0x0 # [RUN] ARCH_SET_GS(0x0), then schedule to 0x1 # Before schedule, set selector to 0x1 # other thread: ARCH_SET_GS(0x1) -- sel is 0x0 # [OK] GS/BASE remained 0x1/0x0 # [RUN] ARCH_SET_GS(0x0), then schedule to 0x1 # Before schedule, set selector to 0x2 # other thread: ARCH_SET_GS(0x1) -- sel is 0x0 # [OK] GS/BASE remained 0x2/0x0 # [RUN] ARCH_SET_GS(0x0), then schedule to 0x1 # Before schedule, set selector to 0x3 # other thread: ARCH_SET_GS(0x1) -- sel is 0x0 # [OK] GS/BASE remained 0x3/0x0 # [RUN] ARCH_SET_GS(0x0), then schedule to 0x1 # Before schedule, set selector to 0x2b # other thread: ARCH_SET_GS(0x1) -- sel is 0x0 # [OK] GS/BASE remained 0x2b/0x0 # [RUN] ARCH_SET_GS(0x0), then schedule to 0x200000000 # other thread: ARCH_SET_GS(0x200000000) -- sel is 0x0 # [OK] GS/BASE remained 0x0/0x0 # [RUN] ARCH_SET_GS(0x0), then schedule to 0x200000000 # Before schedule, set selector to 0x1 # other thread: ARCH_SET_GS(0x200000000) -- sel is 0x0 # [OK] GS/BASE remained 0x1/0x0 # [RUN] ARCH_SET_GS(0x0), then schedule to 0x200000000 # Before schedule, set selector to 0x2 # other thread: ARCH_SET_GS(0x200000000) -- sel is 0x0 # [OK] GS/BASE remained 0x2/0x0 # [RUN] ARCH_SET_GS(0x0), then schedule to 0x200000000 # Before schedule, set selector to 0x3 # other thread: ARCH_SET_GS(0x200000000) -- sel is 0x0 # [OK] GS/BASE remained 0x3/0x0 # [RUN] ARCH_SET_GS(0x0), then schedule to 0x200000000 # Before schedule, set selector to 0x2b # other thread: ARCH_SET_GS(0x200000000) -- sel is 0x0 # [OK] GS/BASE remained 0x2b/0x0 # [RUN] ARCH_SET_GS(0x0) and clear gs, then schedule to 0x0 # other thread: ARCH_SET_GS(0x0) -- sel is 0x0 # [OK] GS/BASE remained 0x0/0x0 # [RUN] ARCH_SET_GS(0x0) and clear gs, then schedule to 0x0 # Before schedule, set selector to 0x1 # other thread: ARCH_SET_GS(0x0) -- sel is 0x0 # [OK] GS/BASE remained 0x1/0x0 # [RUN] ARCH_SET_GS(0x0) and clear gs, then schedule to 0x0 # Before schedule, set selector to 0x2 # other thread: ARCH_SET_GS(0x0) -- sel is 0x0 # [OK] GS/BASE remained 0x2/0x0 # [RUN] ARCH_SET_GS(0x0) and clear gs, then schedule to 0x0 # Before schedule, set selector to 0x3 # other thread: ARCH_SET_GS(0x0) -- sel is 0x0 # [OK] GS/BASE remained 0x3/0x0 # [RUN] ARCH_SET_GS(0x0) and clear gs, then schedule to 0x0 # Before schedule, set selector to 0x2b # other thread: ARCH_SET_GS(0x0) -- sel is 0x0 # [OK] GS/BASE remained 0x2b/0x0 # [RUN] ARCH_SET_GS(0x0) and clear gs, then schedule to 0xa1fa5f343cb85fa4 # other thread: ARCH_SET_GS(0x0) and clear gs -- sel is 0x0 # [OK] GS/BASE remained 0x0/0x0 # [RUN] ARCH_SET_GS(0x0) and clear gs, then schedule to 0xa1fa5f343cb85fa4 # Before schedule, set selector to 0x1 # other thread: ARCH_SET_GS(0x0) and clear gs -- sel is 0x0 # [OK] GS/BASE remained 0x1/0x0 # [RUN] ARCH_SET_GS(0x0) and clear gs, then schedule to 0xa1fa5f343cb85fa4 # Before schedule, set selector to 0x2 # other thread: ARCH_SET_GS(0x0) and clear gs -- sel is 0x0 # [OK] GS/BASE remained 0x2/0x0 # [RUN] ARCH_SET_GS(0x0) and clear gs, then schedule to 0xa1fa5f343cb85fa4 # Before schedule, set selector to 0x3 # other thread: ARCH_SET_GS(0x0) and clear gs -- sel is 0x0 # [OK] GS/BASE remained 0x3/0x0 # [RUN] ARCH_SET_GS(0x0) and clear gs, then schedule to 0xa1fa5f343cb85fa4 # Before schedule, set selector to 0x2b # other thread: ARCH_SET_GS(0x0) and clear gs -- sel is 0x0 # [OK] GS/BASE remained 0x2b/0x0 # [RUN] ARCH_SET_GS(0x0) and clear gs, then schedule to 0x1 # other thread: ARCH_SET_GS(0x1) -- sel is 0x0 # [OK] GS/BASE remained 0x0/0x0 # [RUN] ARCH_SET_GS(0x0) and clear gs, then schedule to 0x1 # Before schedule, set selector to 0x1 # other thread: ARCH_SET_GS(0x1) -- sel is 0x0 # [OK] GS/BASE remained 0x1/0x0 # [RUN] ARCH_SET_GS(0x0) and clear gs, then schedule to 0x1 # Before schedule, set selector to 0x2 # other thread: ARCH_SET_GS(0x1) -- sel is 0x0 # [OK] GS/BASE remained 0x2/0x0 # [RUN] ARCH_SET_GS(0x0) and clear gs, then schedule to 0x1 # Before schedule, set selector to 0x3 # other thread: ARCH_SET_GS(0x1) -- sel is 0x0 # [OK] GS/BASE remained 0x3/0x0 # [RUN] ARCH_SET_GS(0x0) and clear gs, then schedule to 0x1 # Before schedule, set selector to 0x2b # other thread: ARCH_SET_GS(0x1) -- sel is 0x0 # [OK] GS/BASE remained 0x2b/0x0 # [RUN] ARCH_SET_GS(0x0) and clear gs, then schedule to 0x200000000 # other thread: ARCH_SET_GS(0x200000000) -- sel is 0x0 # [OK] GS/BASE remained 0x0/0x0 # [RUN] ARCH_SET_GS(0x0) and clear gs, then schedule to 0x200000000 # Before schedule, set selector to 0x1 # other thread: ARCH_SET_GS(0x200000000) -- sel is 0x0 # [OK] GS/BASE remained 0x1/0x0 # [RUN] ARCH_SET_GS(0x0) and clear gs, then schedule to 0x200000000 # Before schedule, set selector to 0x2 # other thread: ARCH_SET_GS(0x200000000) -- sel is 0x0 # [OK] GS/BASE remained 0x2/0x0 # [RUN] ARCH_SET_GS(0x0) and clear gs, then schedule to 0x200000000 # Before schedule, set selector to 0x3 # other thread: ARCH_SET_GS(0x200000000) -- sel is 0x0 # [OK] GS/BASE remained 0x3/0x0 # [RUN] ARCH_SET_GS(0x0) and clear gs, then schedule to 0x200000000 # Before schedule, set selector to 0x2b # other thread: ARCH_SET_GS(0x200000000) -- sel is 0x0 # [OK] GS/BASE remained 0x2b/0x0 # [RUN] ARCH_SET_GS(0x1), then schedule to 0x0 # other thread: ARCH_SET_GS(0x0) -- sel is 0x0 # [OK] GS/BASE remained 0x0/0x1 # [RUN] ARCH_SET_GS(0x1), then schedule to 0x0 # Before schedule, set selector to 0x1 # other thread: ARCH_SET_GS(0x0) -- sel is 0x0 # [OK] GS/BASE remained 0x1/0x0 # [RUN] ARCH_SET_GS(0x1), then schedule to 0x0 # Before schedule, set selector to 0x2 # other thread: ARCH_SET_GS(0x0) -- sel is 0x0 # [OK] GS/BASE remained 0x2/0x0 # [RUN] ARCH_SET_GS(0x1), then schedule to 0x0 # Before schedule, set selector to 0x3 # other thread: ARCH_SET_GS(0x0) -- sel is 0x0 # [OK] GS/BASE remained 0x3/0x0 # [RUN] ARCH_SET_GS(0x1), then schedule to 0x0 # Before schedule, set selector to 0x2b # other thread: ARCH_SET_GS(0x0) -- sel is 0x0 # [OK] GS/BASE remained 0x2b/0x0 # [RUN] ARCH_SET_GS(0x1), then schedule to 0xa1fa5f343cb85fa4 # other thread: ARCH_SET_GS(0x0) and clear gs -- sel is 0x0 # [OK] GS/BASE remained 0x0/0x1 # [RUN] ARCH_SET_GS(0x1), then schedule to 0xa1fa5f343cb85fa4 # Before schedule, set selector to 0x1 # other thread: ARCH_SET_GS(0x0) and clear gs -- sel is 0x0 # [OK] GS/BASE remained 0x1/0x0 # [RUN] ARCH_SET_GS(0x1), then schedule to 0xa1fa5f343cb85fa4 # Before schedule, set selector to 0x2 # other thread: ARCH_SET_GS(0x0) and clear gs -- sel is 0x0 # [OK] GS/BASE remained 0x2/0x0 # [RUN] ARCH_SET_GS(0x1), then schedule to 0xa1fa5f343cb85fa4 # Before schedule, set selector to 0x3 # other thread: ARCH_SET_GS(0x0) and clear gs -- sel is 0x0 # [OK] GS/BASE remained 0x3/0x0 # [RUN] ARCH_SET_GS(0x1), then schedule to 0xa1fa5f343cb85fa4 # Before schedule, set selector to 0x2b # other thread: ARCH_SET_GS(0x0) and clear gs -- sel is 0x0 # [OK] GS/BASE remained 0x2b/0x0 # [RUN] ARCH_SET_GS(0x1), then schedule to 0x1 # other thread: ARCH_SET_GS(0x1) -- sel is 0x0 # [OK] GS/BASE remained 0x0/0x1 # [RUN] ARCH_SET_GS(0x1), then schedule to 0x1 # Before schedule, set selector to 0x1 # other thread: ARCH_SET_GS(0x1) -- sel is 0x0 # [OK] GS/BASE remained 0x1/0x0 # [RUN] ARCH_SET_GS(0x1), then schedule to 0x1 # Before schedule, set selector to 0x2 # other thread: ARCH_SET_GS(0x1) -- sel is 0x0 # [OK] GS/BASE remained 0x2/0x0 # [RUN] ARCH_SET_GS(0x1), then schedule to 0x1 # Before schedule, set selector to 0x3 # other thread: ARCH_SET_GS(0x1) -- sel is 0x0 # [OK] GS/BASE remained 0x3/0x0 # [RUN] ARCH_SET_GS(0x1), then schedule to 0x1 # Before schedule, set selector to 0x2b # other thread: ARCH_SET_GS(0x1) -- sel is 0x0 # [OK] GS/BASE remained 0x2b/0x0 # [RUN] ARCH_SET_GS(0x1), then schedule to 0x200000000 # other thread: ARCH_SET_GS(0x200000000) -- sel is 0x0 # [OK] GS/BASE remained 0x0/0x1 # [RUN] ARCH_SET_GS(0x1), then schedule to 0x200000000 # Before schedule, set selector to 0x1 # other thread: ARCH_SET_GS(0x200000000) -- sel is 0x0 # [OK] GS/BASE remained 0x1/0x0 # [RUN] ARCH_SET_GS(0x1), then schedule to 0x200000000 # Before schedule, set selector to 0x2 # other thread: ARCH_SET_GS(0x200000000) -- sel is 0x0 # [OK] GS/BASE remained 0x2/0x0 # [RUN] ARCH_SET_GS(0x1), then schedule to 0x200000000 # Before schedule, set selector to 0x3 # other thread: ARCH_SET_GS(0x200000000) -- sel is 0x0 # [OK] GS/BASE remained 0x3/0x0 # [RUN] ARCH_SET_GS(0x1), then schedule to 0x200000000 # Before schedule, set selector to 0x2b # other thread: ARCH_SET_GS(0x200000000) -- sel is 0x0 # [OK] GS/BASE remained 0x2b/0x0 # [RUN] ARCH_SET_GS(0x200000000), then schedule to 0x0 # other thread: ARCH_SET_GS(0x0) -- sel is 0x0 # [OK] GS/BASE remained 0x0/0x200000000 # [RUN] ARCH_SET_GS(0x200000000), then schedule to 0x0 # Before schedule, set selector to 0x1 # other thread: ARCH_SET_GS(0x0) -- sel is 0x0 # [OK] GS/BASE remained 0x1/0x0 # [RUN] ARCH_SET_GS(0x200000000), then schedule to 0x0 # Before schedule, set selector to 0x2 # other thread: ARCH_SET_GS(0x0) -- sel is 0x0 # [OK] GS/BASE remained 0x2/0x0 # [RUN] ARCH_SET_GS(0x200000000), then schedule to 0x0 # Before schedule, set selector to 0x3 # other thread: ARCH_SET_GS(0x0) -- sel is 0x0 # [OK] GS/BASE remained 0x3/0x0 # [RUN] ARCH_SET_GS(0x200000000), then schedule to 0x0 # Before schedule, set selector to 0x2b # other thread: ARCH_SET_GS(0x0) -- sel is 0x0 # [OK] GS/BASE remained 0x2b/0x0 # [RUN] ARCH_SET_GS(0x200000000), then schedule to 0xa1fa5f343cb85fa4 # other thread: ARCH_SET_GS(0x0) and clear gs -- sel is 0x0 # [OK] GS/BASE remained 0x0/0x200000000 # [RUN] ARCH_SET_GS(0x200000000), then schedule to 0xa1fa5f343cb85fa4 # Before schedule, set selector to 0x1 # other thread: ARCH_SET_GS(0x0) and clear gs -- sel is 0x0 # [OK] GS/BASE remained 0x1/0x0 # [RUN] ARCH_SET_GS(0x200000000), then schedule to 0xa1fa5f343cb85fa4 # Before schedule, set selector to 0x2 # other thread: ARCH_SET_GS(0x0) and clear gs -- sel is 0x0 # [OK] GS/BASE remained 0x2/0x0 # [RUN] ARCH_SET_GS(0x200000000), then schedule to 0xa1fa5f343cb85fa4 # Before schedule, set selector to 0x3 # other thread: ARCH_SET_GS(0x0) and clear gs -- sel is 0x0 # [OK] GS/BASE remained 0x3/0x0 # [RUN] ARCH_SET_GS(0x200000000), then schedule to 0xa1fa5f343cb85fa4 # Before schedule, set selector to 0x2b # other thread: ARCH_SET_GS(0x0) and clear gs -- sel is 0x0 # [OK] GS/BASE remained 0x2b/0x0 # [RUN] ARCH_SET_GS(0x200000000), then schedule to 0x1 # other thread: ARCH_SET_GS(0x1) -- sel is 0x0 # [OK] GS/BASE remained 0x0/0x200000000 # [RUN] ARCH_SET_GS(0x200000000), then schedule to 0x1 # Before schedule, set selector to 0x1 # other thread: ARCH_SET_GS(0x1) -- sel is 0x0 # [OK] GS/BASE remained 0x1/0x0 # [RUN] ARCH_SET_GS(0x200000000), then schedule to 0x1 # Before schedule, set selector to 0x2 # other thread: ARCH_SET_GS(0x1) -- sel is 0x0 # [OK] GS/BASE remained 0x2/0x0 # [RUN] ARCH_SET_GS(0x200000000), then schedule to 0x1 # Before schedule, set selector to 0x3 # other thread: ARCH_SET_GS(0x1) -- sel is 0x0 # [OK] GS/BASE remained 0x3/0x0 # [RUN] ARCH_SET_GS(0x200000000), then schedule to 0x1 # Before schedule, set selector to 0x2b # other thread: ARCH_SET_GS(0x1) -- sel is 0x0 # [OK] GS/BASE remained 0x2b/0x0 # [RUN] ARCH_SET_GS(0x200000000), then schedule to 0x200000000 # other thread: ARCH_SET_GS(0x200000000) -- sel is 0x0 # [OK] GS/BASE remained 0x0/0x200000000 # [RUN] ARCH_SET_GS(0x200000000), then schedule to 0x200000000 # Before schedule, set selector to 0x1 # other thread: ARCH_SET_GS(0x200000000) -- sel is 0x0 # [OK] GS/BASE remained 0x1/0x0 # [RUN] ARCH_SET_GS(0x200000000), then schedule to 0x200000000 # Before schedule, set selector to 0x2 # other thread: ARCH_SET_GS(0x200000000) -- sel is 0x0 # [OK] GS/BASE remained 0x2/0x0 # [RUN] ARCH_SET_GS(0x200000000), then schedule to 0x200000000 # Before schedule, set selector to 0x3 # other thread: ARCH_SET_GS(0x200000000) -- sel is 0x0 # [OK] GS/BASE remained 0x3/0x0 # [RUN] ARCH_SET_GS(0x200000000), then schedule to 0x200000000 # Before schedule, set selector to 0x2b # other thread: ARCH_SET_GS(0x200000000) -- sel is 0x0 # [OK] GS/BASE remained 0x2b/0x0 # [RUN] ARCH_SET_GS(0), clear gs, then manipulate GSBASE in a different thread # using LDT slot 0 # [OK] GSBASE remained 0 # [OK] GS was reset as expected ok 36 selftests: x86: fsgsbase_64 # selftests: x86: sysret_rip_64 # [RUN] sigreturn to 0x800000000000 # [OK] Got SIGSEGV at RIP=0x800000000000 # [RUN] sigreturn to 0x1000000000000 # [OK] Got SIGSEGV at RIP=0x1000000000000 # [RUN] sigreturn to 0x2000000000000 # [OK] Got SIGSEGV at RIP=0x2000000000000 # [RUN] sigreturn to 0x4000000000000 # [OK] Got SIGSEGV at RIP=0x4000000000000 # [RUN] sigreturn to 0x8000000000000 # [OK] Got SIGSEGV at RIP=0x8000000000000 # [RUN] sigreturn to 0x10000000000000 # [OK] Got SIGSEGV at RIP=0x10000000000000 # [RUN] sigreturn to 0x20000000000000 # [OK] Got SIGSEGV at RIP=0x20000000000000 # [RUN] sigreturn to 0x40000000000000 # [OK] Got SIGSEGV at RIP=0x40000000000000 # [RUN] sigreturn to 0x80000000000000 # [OK] Got SIGSEGV at RIP=0x80000000000000 # [RUN] sigreturn to 0x100000000000000 # [OK] Got SIGSEGV at RIP=0x100000000000000 # [RUN] sigreturn to 0x200000000000000 # [OK] Got SIGSEGV at RIP=0x200000000000000 # [RUN] sigreturn to 0x400000000000000 # [OK] Got SIGSEGV at RIP=0x400000000000000 # [RUN] sigreturn to 0x800000000000000 # [OK] Got SIGSEGV at RIP=0x800000000000000 # [RUN] sigreturn to 0x1000000000000000 # [OK] Got SIGSEGV at RIP=0x1000000000000000 # [RUN] sigreturn to 0x2000000000000000 # [OK] Got SIGSEGV at RIP=0x2000000000000000 # [RUN] sigreturn to 0x4000000000000000 # [OK] Got SIGSEGV at RIP=0x4000000000000000 # [RUN] sigreturn to 0x8000000000000000 # [OK] Got SIGSEGV at RIP=0x8000000000000000 # [RUN] Trying a SYSCALL that falls through to 0x7fffffffe000 # [OK] We survived # [RUN] Trying a SYSCALL that falls through to 0x7ffffffff000 # [OK] We survived # [RUN] Trying a SYSCALL that falls through to 0x800000000000 # [OK] mremap to 0x7ffffffff000 failed # [RUN] Trying a SYSCALL that falls through to 0xfffffffff000 # [OK] mremap to 0xffffffffe000 failed # [RUN] Trying a SYSCALL that falls through to 0x1000000000000 # [OK] mremap to 0xfffffffff000 failed # [RUN] Trying a SYSCALL that falls through to 0x1fffffffff000 # [OK] mremap to 0x1ffffffffe000 failed # [RUN] Trying a SYSCALL that falls through to 0x2000000000000 # [OK] mremap to 0x1fffffffff000 failed # [RUN] Trying a SYSCALL that falls through to 0x3fffffffff000 # [OK] mremap to 0x3ffffffffe000 failed # [RUN] Trying a SYSCALL that falls through to 0x4000000000000 # [OK] mremap to 0x3fffffffff000 failed # [RUN] Trying a SYSCALL that falls through to 0x7fffffffff000 # [OK] mremap to 0x7ffffffffe000 failed # [RUN] Trying a SYSCALL that falls through to 0x8000000000000 # [OK] mremap to 0x7fffffffff000 failed # [RUN] Trying a SYSCALL that falls through to 0xffffffffff000 # [OK] mremap to 0xfffffffffe000 failed # [RUN] Trying a SYSCALL that falls through to 0x10000000000000 # [OK] mremap to 0xffffffffff000 failed # [RUN] Trying a SYSCALL that falls through to 0x1ffffffffff000 # [OK] mremap to 0x1fffffffffe000 failed # [RUN] Trying a SYSCALL that falls through to 0x20000000000000 # [OK] mremap to 0x1ffffffffff000 failed # [RUN] Trying a SYSCALL that falls through to 0x3ffffffffff000 # [OK] mremap to 0x3fffffffffe000 failed # [RUN] Trying a SYSCALL that falls through to 0x40000000000000 # [OK] mremap to 0x3ffffffffff000 failed # [RUN] Trying a SYSCALL that falls through to 0x7ffffffffff000 # [OK] mremap to 0x7fffffffffe000 failed # [RUN] Trying a SYSCALL that falls through to 0x80000000000000 # [OK] mremap to 0x7ffffffffff000 failed # [RUN] Trying a SYSCALL that falls through to 0xfffffffffff000 # [OK] mremap to 0xffffffffffe000 failed # [RUN] Trying a SYSCALL that falls through to 0x100000000000000 # [OK] mremap to 0xfffffffffff000 failed # [RUN] Trying a SYSCALL that falls through to 0x1fffffffffff000 # [OK] mremap to 0x1ffffffffffe000 failed # [RUN] Trying a SYSCALL that falls through to 0x200000000000000 # [OK] mremap to 0x1fffffffffff000 failed # [RUN] Trying a SYSCALL that falls through to 0x3fffffffffff000 # [OK] mremap to 0x3ffffffffffe000 failed # [RUN] Trying a SYSCALL that falls through to 0x400000000000000 # [OK] mremap to 0x3fffffffffff000 failed # [RUN] Trying a SYSCALL that falls through to 0x7fffffffffff000 # [OK] mremap to 0x7ffffffffffe000 failed # [RUN] Trying a SYSCALL that falls through to 0x800000000000000 # [OK] mremap to 0x7fffffffffff000 failed # [RUN] Trying a SYSCALL that falls through to 0xffffffffffff000 # [OK] mremap to 0xfffffffffffe000 failed # [RUN] Trying a SYSCALL that falls through to 0x1000000000000000 # [OK] mremap to 0xffffffffffff000 failed # [RUN] Trying a SYSCALL that falls through to 0x1ffffffffffff000 # [OK] mremap to 0x1fffffffffffe000 failed # [RUN] Trying a SYSCALL that falls through to 0x2000000000000000 # [OK] mremap to 0x1ffffffffffff000 failed # [RUN] Trying a SYSCALL that falls through to 0x3ffffffffffff000 # [OK] mremap to 0x3fffffffffffe000 failed # [RUN] Trying a SYSCALL that falls through to 0x4000000000000000 # [OK] mremap to 0x3ffffffffffff000 failed # [RUN] Trying a SYSCALL that falls through to 0x7ffffffffffff000 # [OK] mremap to 0x7fffffffffffe000 failed # [RUN] Trying a SYSCALL that falls through to 0x8000000000000000 # [OK] mremap to 0x7ffffffffffff000 failed ok 37 selftests: x86: sysret_rip_64 # selftests: x86: syscall_numbering_64 # Checking for x32... not supported # [RUN] Checking syscalls 512-547 # [RUN] Checking some 64-bit syscalls in x32 range # [RUN] Checking numbers above 2^32-1 # [OK] They all returned -ENOSYS ok 38 selftests: x86: syscall_numbering_64 # selftests: x86: ldt_gdt_64 # [NOTE] set_thread_area is available; will use GDT index 12 # [OK] LDT entry 0 has AR 0x0040FB00 and limit 0x0000000A # [OK] LDT entry 0 has AR 0x00C0FB00 and limit 0x0000AFFF # [OK] LDT entry 1 is invalid # [OK] LDT entry 2 has AR 0x00C0FB00 and limit 0x0000AFFF # [OK] LDT entry 1 is invalid # [OK] LDT entry 2 has AR 0x00C0FB00 and limit 0x0000AFFF # [OK] LDT entry 2 has AR 0x00D0FB00 and limit 0x0000AFFF # [OK] LDT entry 2 has AR 0x00D07B00 and limit 0x0000AFFF # [OK] LDT entry 2 has AR 0x00907B00 and limit 0x0000AFFF # [OK] LDT entry 2 has AR 0x00D07300 and limit 0x0000AFFF # [OK] LDT entry 2 has AR 0x00D07100 and limit 0x0000AFFF # [OK] LDT entry 2 has AR 0x00D07500 and limit 0x0000AFFF # [OK] LDT entry 2 has AR 0x00507700 and limit 0x0000000A # [OK] LDT entry 2 has AR 0x00507F00 and limit 0x0000000A # [OK] LDT entry 2 has AR 0x00507D00 and limit 0x0000000A # [OK] LDT entry 2 has AR 0x00507B00 and limit 0x0000000A # [OK] LDT entry 2 has AR 0x00507900 and limit 0x0000000A # [OK] LDT entry 2 has AR 0x00507900 and limit 0x0000000A # [RUN] Test fork # [OK] LDT entry 2 has AR 0x00507900 and limit 0x0000000A # [OK] LDT entry 1 is invalid # [OK] LDT entry 0 is invalid # [NOTE] set_thread_area is available; will use GDT index 12 # [OK] LDT entry 0 has AR 0x0040FB00 and limit 0x0000000A # [OK] LDT entry 0 has AR 0x00C0FB00 and limit 0x0000AFFF # [OK] LDT entry 1 is invalid # [OK] LDT entry 2 has AR 0x00C0FB00 and limit 0x0000AFFF # [OK] LDT entry 1 is invalid # [OK] LDT entry 2 has AR 0x00C0FB00 and limit 0x0000AFFF # [OK] LDT entry 2 has AR 0x00D0FB00 and limit 0x0000AFFF # [OK] LDT entry 2 has AR 0x00D07B00 and limit 0x0000AFFF # [OK] LDT entry 2 has AR 0x00907B00 and limit 0x0000AFFF # [OK] LDT entry 2 has AR 0x00D07300 and limit 0x0000AFFF # [OK] LDT entry 2 has AR 0x00D07100 and limit 0x0000AFFF # [OK] LDT entry 2 has AR 0x00D07500 and limit 0x0000AFFF # [OK] LDT entry 2 has AR 0x00507700 and limit 0x0000000A # [OK] LDT entry 2 has AR 0x00507F00 and limit 0x0000000A # [OK] LDT entry 2 has AR 0x00507D00 and limit 0x0000000A # [OK] LDT entry 2 has AR 0x00507B00 and limit 0x0000000A # [OK] LDT entry 2 has AR 0x00507900 and limit 0x0000000A # [OK] LDT entry 2 has AR 0x00507900 and limit 0x0000000A # [RUN] Test fork # [OK] Child succeeded # [RUN] Test size # [DONE] Size test # [OK] modify_ldt failure 22 # [OK] LDT entry 0 has AR 0x0000F300 and limit 0x00000000 # [OK] LDT entry 0 has AR 0x00007300 and limit 0x00000000 # [OK] LDT entry 0 has AR 0x0000F100 and limit 0x00000000 # [OK] LDT entry 0 has AR 0x00007300 and limit 0x00000000 # [OK] LDT entry 0 has AR 0x00007100 and limit 0x00000001 # [OK] LDT entry 0 has AR 0x00007100 and limit 0x00000000 # [OK] LDT entry 0 is invalid # [OK] LDT entry 0 has AR 0x0040F300 and limit 0x000FFFFF # [OK] LDT entry 0 has AR 0x00C0F300 and limit 0xFFFFFFFF # [OK] LDT entry 0 has AR 0x00C0F100 and limit 0xFFFFFFFF # [OK] LDT entry 0 has AR 0x00C0F700 and limit 0xFFFFFFFF # [OK] LDT entry 0 has AR 0x00C0F500 and limit 0xFFFFFFFF # [OK] LDT entry 0 is invalid # [RUN] Cross-CPU LDT invalidation # [OK] All 5 iterations succeeded # [RUN] Test exec # [OK] LDT entry 0 has AR 0x0040FB00 and limit 0x0000002A # [OK] Child succeeded # [OK] Invalidate DS with set_thread_area: new DS = 0x0 # [OK] Invalidate ES with set_thread_area: new ES = 0x0 # [OK] Invalidate FS with set_thread_area: new FS = 0x0 # [OK] New FSBASE was zero # [OK] Invalidate GS with set_thread_area: new GS = 0x0 # [OK] New GSBASE was zero ok 39 selftests: x86: ldt_gdt_64 # selftests: x86: ptrace_syscall_64 # [RUN] Check int80 return regs # [OK] getpid() preserves regs # [OK] kill(getpid(), SIGUSR1) preserves regs # [RUN] ptrace-induced syscall restart # [RUN] SYSEMU # [OK] Initial nr and args are correct # [RUN] Restart the syscall (ip = 0x7f877c0d2f49) # [OK] Restarted nr and args are correct # [RUN] Change nr and args and restart the syscall (ip = 0x7f877c0d2f49) # [OK] Replacement nr and args are correct # [OK] Child exited cleanly # [RUN] kernel syscall restart under ptrace # [RUN] SYSCALL # [OK] Initial nr and args are correct # [RUN] SYSCALL # [OK] Args after SIGUSR1 are correct (ax = -514) # [OK] Child got SIGUSR1 # [RUN] Step again # [OK] pause(2) restarted correctly ok 40 selftests: x86: ptrace_syscall_64 make: Leaving directory '/usr/src/perf_selftests-x86_64-rhel-7.6-d83f959b5e7a6378a4afbff23de2a2d064d95749/tools/testing/selftests/x86'