From f308637481933efaa8d71ed104eeaff6e0ebb6d0 Mon Sep 17 00:00:00 2001 From: criyle Date: Sat, 13 Aug 2022 01:32:16 -0700 Subject: [PATCH] forkexec: fix child error report --- pkg/forkexec/fork_linux.go | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/pkg/forkexec/fork_linux.go b/pkg/forkexec/fork_linux.go index 35ba596..43fa199 100644 --- a/pkg/forkexec/fork_linux.go +++ b/pkg/forkexec/fork_linux.go @@ -61,7 +61,6 @@ func (r *Runner) Start() (int, error) { func syncWithChild(r *Runner, p [2]int, pid int, err1 syscall.Errno) (int, error) { var ( - r1 uintptr err2 syscall.Errno err error unshareUser = r.CloneFlags&unix.CLONE_NEWUSER == unix.CLONE_NEWUSER @@ -90,7 +89,7 @@ func syncWithChild(r *Runner, p [2]int, pid int, err1 syscall.Errno) (int, error n, err := readChildErr(p[0], &childErr) // child returned error code if (n != int(unsafe.Sizeof(err2)) && n != int(unsafe.Sizeof(childErr))) || childErr.Err != 0 || err != nil { - childErr.Err = handlePipeError(r1, childErr.Err) + childErr.Err = handlePipeError(n, childErr.Err) goto fail } @@ -117,7 +116,7 @@ func syncWithChild(r *Runner, p [2]int, pid int, err1 syscall.Errno) (int, error n, err = readChildErr(p[0], &childErr) unix.Close(p[0]) if n != 0 || err != nil { - childErr.Err = handlePipeError(r1, childErr.Err) + childErr.Err = handlePipeError(n, childErr.Err) goto failAfterClose } return int(pid), nil @@ -154,8 +153,8 @@ func readlen(fd int, p *byte, np int) (n int, err error) { } // check pipe error -func handlePipeError(r1 uintptr, errno syscall.Errno) syscall.Errno { - if r1 >= unsafe.Sizeof(errno) { +func handlePipeError(r1 int, errno syscall.Errno) syscall.Errno { + if uintptr(r1) >= unsafe.Sizeof(errno) { return syscall.Errno(errno) } return syscall.EPIPE