From: Tobias Klauser Date: Thu, 15 Mar 2018 09:21:57 +0000 (+0100) Subject: runtime: use Android O friendly faccessat syscall on linux/amd64 X-Git-Tag: go1.11beta1~1196 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=5fcfe6b6ae53ed5e5cf43250c96cc40c2790fb3a;p=gostls13.git runtime: use Android O friendly faccessat syscall on linux/amd64 The Android O seccomp policy disallows the access syscall on amd64, see https://android.googlesource.com/platform/bionic/+/android-4.2.2_r1.2/libc/SYSCALLS.TXT Use the faccessat syscall with AT_FDCWD instead to achieve the same behavior. Updates #24403 Change-Id: I9db847c1c0f33987a3479b3f96e721fb9588cde2 Reviewed-on: https://go-review.googlesource.com/100877 Run-TryBot: Tobias Klauser TryBot-Result: Gobot Gobot Reviewed-by: Brad Fitzpatrick --- diff --git a/src/runtime/sys_linux_amd64.s b/src/runtime/sys_linux_amd64.s index 39003498d5..e03f7ce44c 100644 --- a/src/runtime/sys_linux_amd64.s +++ b/src/runtime/sys_linux_amd64.s @@ -21,7 +21,6 @@ #define SYS_rt_sigaction 13 #define SYS_rt_sigprocmask 14 #define SYS_rt_sigreturn 15 -#define SYS_access 21 #define SYS_sched_yield 24 #define SYS_mincore 27 #define SYS_madvise 28 @@ -43,6 +42,7 @@ #define SYS_exit_group 231 #define SYS_epoll_ctl 233 #define SYS_openat 257 +#define SYS_faccessat 269 #define SYS_pselect6 270 #define SYS_epoll_pwait 281 #define SYS_epoll_create1 291 @@ -687,9 +687,12 @@ TEXT runtime·closeonexec(SB),NOSPLIT,$0 // int access(const char *name, int mode) TEXT runtime·access(SB),NOSPLIT,$0 - MOVQ name+0(FP), DI - MOVL mode+8(FP), SI - MOVL $SYS_access, AX + // This uses faccessat instead of access, because Android O blocks access. + MOVL $AT_FDCWD, DI // AT_FDCWD, so this acts like access + MOVQ name+0(FP), SI + MOVL mode+8(FP), DX + MOVL $0, R10 + MOVL $SYS_faccessat, AX SYSCALL MOVL AX, ret+16(FP) RET