os: always check for EINTR in calls to open
For #11180
For #20400
For #39237
Change-Id: I8de97517c8f92c08f0c8a51f651a17e31617979b
Reviewed-on: https://go-review.googlesource.com/c/go/+/236997
Reviewed-by: Bryan C. Mills <bcmills@google.com>
diff --git a/src/os/file_unix.go b/src/os/file_unix.go
index b93e2bd..f2c00ae 100644
--- a/src/os/file_unix.go
+++ b/src/os/file_unix.go
@@ -202,10 +202,8 @@
break
}
- // On OS X, sigaction(2) doesn't guarantee that SA_RESTART will cause
- // open(2) to be restarted for regular files. This is easy to reproduce on
- // fuse file systems (see https://golang.org/issue/11180).
- if runtime.GOOS == "darwin" && e == syscall.EINTR {
+ // We have to check EINTR here, per issues 11180 and 39237.
+ if e == syscall.EINTR {
continue
}
diff --git a/src/os/removeall_at.go b/src/os/removeall_at.go
index e619851..37bf1b8 100644
--- a/src/os/removeall_at.go
+++ b/src/os/removeall_at.go
@@ -9,7 +9,6 @@
import (
"internal/syscall/unix"
"io"
- "runtime"
"syscall"
)
@@ -178,7 +177,7 @@
}
// See comment in openFileNolog.
- if runtime.GOOS == "darwin" && e == syscall.EINTR {
+ if e == syscall.EINTR {
continue
}