From edf3ec987ff51584c3bfdaeef7d0a24646d0fb4b Mon Sep 17 00:00:00 2001 From: Joel Sing Date: Tue, 7 Jan 2020 04:31:23 +1100 Subject: [PATCH] runtime: correct setNonblock on linux/arm64 The current code uses EOR (exclusive OR), which will result in the O_NONBLOCK flag being toggled rather than being set. Other implementations use OR, hence this is likely a bug. Change-Id: I5dafa9c572452070bd37789c8a731ad6d04a86cd Reviewed-on: https://go-review.googlesource.com/c/go/+/212766 Run-TryBot: Ian Lance Taylor Reviewed-by: Cherry Zhang Reviewed-by: Ian Lance Taylor TryBot-Result: Gobot Gobot --- src/runtime/sys_linux_arm64.s | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/runtime/sys_linux_arm64.s b/src/runtime/sys_linux_arm64.s index 8a0f06f206..8c2a249c9f 100644 --- a/src/runtime/sys_linux_arm64.s +++ b/src/runtime/sys_linux_arm64.s @@ -688,7 +688,7 @@ TEXT runtime·setNonblock(SB),NOSPLIT|NOFRAME,$0-4 MOVD $SYS_fcntl, R8 SVC MOVD $0x800, R2 // O_NONBLOCK - EOR R0, R2 + ORR R0, R2 MOVW fd+0(FP), R0 // fd MOVD $4, R1 // F_SETFL MOVD $SYS_fcntl, R8 -- 2.50.0