]> Cypherpunks repositories - gostls13.git/commitdiff
internal/poll: use atomic.Bool in DupCloseOnExec
authorTobias Klauser <tklauser@distanz.ch>
Wed, 1 Feb 2023 10:29:28 +0000 (11:29 +0100)
committerGopher Robot <gobot@golang.org>
Thu, 2 Feb 2023 15:35:04 +0000 (15:35 +0000)
Invert the meaning of the var to make use of the zero value.

Change-Id: If18db09896a67cb37cb3fe7dc0fb3493c6050a87
Reviewed-on: https://go-review.googlesource.com/c/go/+/463847
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
Auto-Submit: Tobias Klauser <tobias.klauser@gmail.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
src/internal/poll/fd_unix.go

index 2786064d9f32dcdf09ca960163035ee41e8f654a..5373052e655933442be34e3623752cf83e1ebbf1 100644 (file)
@@ -688,13 +688,12 @@ func (fd *FD) Fstat(s *syscall.Stat_t) error {
        })
 }
 
-// tryDupCloexec indicates whether F_DUPFD_CLOEXEC should be used.
-// If the kernel doesn't support it, this is set to 0.
-var tryDupCloexec = int32(1)
+// dupCloexecUnsupported indicates whether F_DUPFD_CLOEXEC is supported by the kernel.
+var dupCloexecUnsupported atomic.Bool
 
 // DupCloseOnExec dups fd and marks it close-on-exec.
 func DupCloseOnExec(fd int) (int, string, error) {
-       if syscall.F_DUPFD_CLOEXEC != 0 && atomic.LoadInt32(&tryDupCloexec) == 1 {
+       if syscall.F_DUPFD_CLOEXEC != 0 && !dupCloexecUnsupported.Load() {
                r0, e1 := fcntl(fd, syscall.F_DUPFD_CLOEXEC, 0)
                if e1 == nil {
                        return r0, "", nil
@@ -704,7 +703,7 @@ func DupCloseOnExec(fd int) (int, string, error) {
                        // Old kernel, or js/wasm (which returns
                        // ENOSYS). Fall back to the portable way from
                        // now on.
-                       atomic.StoreInt32(&tryDupCloexec, 0)
+                       dupCloexecUnsupported.Store(true)
                default:
                        return -1, "fcntl", e1
                }