1*053f45beSAndroid Build Coastguard WorkerFrom ad6fc2f796d9610356a052d2967d1794e2b52933 Mon Sep 17 00:00:00 2001 2*053f45beSAndroid Build Coastguard WorkerFrom: Steve Muckle <[email protected]> 3*053f45beSAndroid Build Coastguard WorkerDate: Tue, 24 Oct 2017 14:41:07 -0700 4*053f45beSAndroid Build Coastguard WorkerSubject: [PATCH 09/20] seccomp: detect compat mode in ARM64 5*053f45beSAndroid Build Coastguard Worker 6*053f45beSAndroid Build Coastguard WorkerCompat mode on ARM64 reports syscall numbering differently. 7*053f45beSAndroid Build Coastguard Worker 8*053f45beSAndroid Build Coastguard Worker(cherry picked from commit ce845e0a25d77c8cf0fae539d4596b83e65e3e70) 9*053f45beSAndroid Build Coastguard WorkerTest: run vts-kernel -m VtsKernelLinuxKselftestStaging 10*053f45beSAndroid Build Coastguard WorkerBug: 33027081 11*053f45beSAndroid Build Coastguard WorkerSigned-off-by: Steve Muckle <[email protected]> 12*053f45beSAndroid Build Coastguard Worker--- 13*053f45beSAndroid Build Coastguard Worker tools/testing/selftests/seccomp/seccomp_bpf.c | 5 +++-- 14*053f45beSAndroid Build Coastguard Worker 1 file changed, 3 insertions(+), 2 deletions(-) 15*053f45beSAndroid Build Coastguard Worker 16*053f45beSAndroid Build Coastguard Workerdiff --git a/tools/testing/selftests/seccomp/seccomp_bpf.c b/tools/testing/selftests/seccomp/seccomp_bpf.c 17*053f45beSAndroid Build Coastguard Workerindex 325725ca082f..110ca8bf8e2b 100644 18*053f45beSAndroid Build Coastguard Worker--- a/tools/testing/selftests/seccomp/seccomp_bpf.c 19*053f45beSAndroid Build Coastguard Worker+++ b/tools/testing/selftests/seccomp/seccomp_bpf.c 20*053f45beSAndroid Build Coastguard Worker@@ -3054,6 +3054,7 @@ TEST(syscall_restart) 21*053f45beSAndroid Build Coastguard Worker }; 22*053f45beSAndroid Build Coastguard Worker #if defined(__arm__) 23*053f45beSAndroid Build Coastguard Worker struct utsname utsbuf; 24*053f45beSAndroid Build Coastguard Worker+ int arm_version; 25*053f45beSAndroid Build Coastguard Worker #endif 26*053f45beSAndroid Build Coastguard Worker 27*053f45beSAndroid Build Coastguard Worker ASSERT_EQ(0, pipe(pipefd)); 28*053f45beSAndroid Build Coastguard Worker@@ -3169,12 +3170,12 @@ TEST(syscall_restart) 29*053f45beSAndroid Build Coastguard Worker ret = get_syscall(_metadata, child_pid); 30*053f45beSAndroid Build Coastguard Worker #if defined(__arm__) 31*053f45beSAndroid Build Coastguard Worker /* 32*053f45beSAndroid Build Coastguard Worker- * FIXME: 33*053f45beSAndroid Build Coastguard Worker * - native ARM registers do NOT expose true syscall. 34*053f45beSAndroid Build Coastguard Worker * - compat ARM registers on ARM64 DO expose true syscall. 35*053f45beSAndroid Build Coastguard Worker */ 36*053f45beSAndroid Build Coastguard Worker ASSERT_EQ(0, uname(&utsbuf)); 37*053f45beSAndroid Build Coastguard Worker- if (strncmp(utsbuf.machine, "arm", 3) == 0) { 38*053f45beSAndroid Build Coastguard Worker+ if (sscanf(utsbuf.machine, "armv%d", &arm_version) == 1 && 39*053f45beSAndroid Build Coastguard Worker+ arm_version < 8) { 40*053f45beSAndroid Build Coastguard Worker EXPECT_EQ(__NR_nanosleep, ret); 41*053f45beSAndroid Build Coastguard Worker } else 42*053f45beSAndroid Build Coastguard Worker #endif 43*053f45beSAndroid Build Coastguard Worker-- 44*053f45beSAndroid Build Coastguard Worker2.42.0.609.gbb76f46606-goog 45*053f45beSAndroid Build Coastguard Worker 46