aboutsummaryrefslogtreecommitdiff
path: root/src/syscall/exec_unix.go
diff options
context:
space:
mode:
authorAlexander Rakoczy <alex@golang.org>2021-12-09 13:17:40 -0500
committerAlexander Rakoczy <alex@golang.org>2021-12-09 13:17:40 -0500
commitadecd3ffbec722f69dfb5993d25f63aed5305a71 (patch)
tree11f6c90a5fda64c865ebb270e70a0aa85953b247 /src/syscall/exec_unix.go
parentc884bd9ef2f1f36a98fa89bb4be07d4f9fe66589 (diff)
parentf1f3923d2e3a0952c698d2901fc052046fa4af3d (diff)
downloadgo-adecd3ffbec722f69dfb5993d25f63aed5305a71.tar.gz
go-adecd3ffbec722f69dfb5993d25f63aed5305a71.zip
[dev.boringcrypto.go1.16] all: merge go1.16.12 into dev.boringcrypto.go1.16
Change-Id: I67a17ce0d561c66c7dc85a69c464e5b4728f232f
Diffstat (limited to 'src/syscall/exec_unix.go')
-rw-r--r--src/syscall/exec_unix.go20
1 files changed, 6 insertions, 14 deletions
diff --git a/src/syscall/exec_unix.go b/src/syscall/exec_unix.go
index 1f49c78ef9..290dd383ec 100644
--- a/src/syscall/exec_unix.go
+++ b/src/syscall/exec_unix.go
@@ -152,9 +152,6 @@ func forkExec(argv0 string, argv []string, attr *ProcAttr) (pid int, err error)
sys = &zeroSysProcAttr
}
- p[0] = -1
- p[1] = -1
-
// Convert args to C form.
argv0p, err := BytePtrFromString(argv0)
if err != nil {
@@ -204,14 +201,17 @@ func forkExec(argv0 string, argv []string, attr *ProcAttr) (pid int, err error)
// Allocate child status pipe close on exec.
if err = forkExecPipe(p[:]); err != nil {
- goto error
+ ForkLock.Unlock()
+ return 0, err
}
// Kick off child.
pid, err1 = forkAndExecInChild(argv0p, argvp, envvp, chroot, dir, attr, sys, p[1])
if err1 != 0 {
- err = Errno(err1)
- goto error
+ Close(p[0])
+ Close(p[1])
+ ForkLock.Unlock()
+ return 0, Errno(err1)
}
ForkLock.Unlock()
@@ -243,14 +243,6 @@ func forkExec(argv0 string, argv []string, attr *ProcAttr) (pid int, err error)
// Read got EOF, so pipe closed on exec, so exec succeeded.
return pid, nil
-
-error:
- if p[0] >= 0 {
- Close(p[0])
- Close(p[1])
- }
- ForkLock.Unlock()
- return 0, err
}
// Combination of fork and exec, careful to be thread safe.