Home | History | Annotate | Download | only in patches
      1 From ce845e0a25d77c8cf0fae539d4596b83e65e3e70 Mon Sep 17 00:00:00 2001
      2 From: Steve Muckle <smuckle (a] google.com>
      3 Date: Tue, 24 Oct 2017 14:41:07 -0700
      4 Subject: [PATCH] seccomp: detect compat mode in ARM64
      5 
      6 Compat mode on ARM64 reports syscall numbering differently.
      7 
      8 Test: run vts-kernel -m VtsKernelLinuxKselftestStaging
      9 Bug: 33027081
     10 Change-Id: Ifc02bb48573b4a40f1857b41a7735a6e3d7a06e8
     11 Signed-off-by: Steve Muckle <smuckle (a] google.com>
     12 ---
     13  tools/testing/selftests/seccomp/seccomp_bpf.c | 5 +++--
     14  1 file changed, 3 insertions(+), 2 deletions(-)
     15 
     16 diff --git a/tools/testing/selftests/seccomp/seccomp_bpf.c b/tools/testing/selftests/seccomp/seccomp_bpf.c
     17 index 2c81f4b9965d..1975e7d42e37 100644
     18 --- a/tools/testing/selftests/seccomp/seccomp_bpf.c
     19 +++ b/tools/testing/selftests/seccomp/seccomp_bpf.c
     20 @@ -2295,6 +2295,7 @@ TEST(syscall_restart)
     21  	};
     22  #if defined(__arm__)
     23  	struct utsname utsbuf;
     24 +	int arm_version;
     25  #endif
     26  
     27  	ASSERT_EQ(0, pipe(pipefd));
     28 @@ -2404,12 +2405,12 @@ TEST(syscall_restart)
     29  	ret = get_syscall(_metadata, child_pid);
     30  #if defined(__arm__)
     31  	/*
     32 -	 * FIXME:
     33  	 * - native ARM registers do NOT expose true syscall.
     34  	 * - compat ARM registers on ARM64 DO expose true syscall.
     35  	 */
     36  	ASSERT_EQ(0, uname(&utsbuf));
     37 -	if (strncmp(utsbuf.machine, "arm", 3) == 0) {
     38 +	if (sscanf(utsbuf.machine, "armv%d", &arm_version) == 1 &&
     39 +	    arm_version < 8) {
     40  		EXPECT_EQ(__NR_nanosleep, ret);
     41  	} else
     42  #endif
     43 -- 
     44 2.16.0.rc1.238.g530d649a79-goog
     45 
     46