From: Tobias Klauser Date: Thu, 15 Mar 2018 09:21:57 +0000 (+0100) Subject: [release-branch.go1.10] runtime: use Android O friendly faccessat syscall on linux... X-Git-Tag: go1.10.1~14 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=8d90bb4b199261000c0011348eeac5e4ad642f1d;p=gostls13.git [release-branch.go1.10] 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 Reviewed-on: https://go-review.googlesource.com/102995 Run-TryBot: Andrew Bonventre Reviewed-by: Ian Lance Taylor --- diff --git a/src/runtime/sys_linux_amd64.s b/src/runtime/sys_linux_amd64.s index 576a91a85c..a5db5cba23 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 @@ -44,6 +43,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 @@ -682,9 +682,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