int/linux: add/use Exec

Drop the libcontainer/system/exec, and use the linux.Exec instead.

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
This commit is contained in:
Kir Kolyshkin
2025-03-25 14:41:41 -07:00
parent 431b8bb4d8
commit c690b66d7f
4 changed files with 15 additions and 11 deletions

View File

@@ -6,6 +6,17 @@ import (
"golang.org/x/sys/unix" "golang.org/x/sys/unix"
) )
// Exec wraps [unix.Exec].
func Exec(cmd string, args []string, env []string) error {
err := retryOnEINTR(func() error {
return unix.Exec(cmd, args, env)
})
if err != nil {
return &os.PathError{Op: "exec", Path: cmd, Err: err}
}
return nil
}
// Getwd wraps [unix.Getwd]. // Getwd wraps [unix.Getwd].
func Getwd() (wd string, err error) { func Getwd() (wd string, err error) {
wd, err = retryOnEINTR2(unix.Getwd) wd, err = retryOnEINTR2(unix.Getwd)

View File

@@ -10,6 +10,7 @@ import (
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
"golang.org/x/sys/unix" "golang.org/x/sys/unix"
"github.com/opencontainers/runc/internal/linux"
"github.com/opencontainers/runc/libcontainer/apparmor" "github.com/opencontainers/runc/libcontainer/apparmor"
"github.com/opencontainers/runc/libcontainer/keys" "github.com/opencontainers/runc/libcontainer/keys"
"github.com/opencontainers/runc/libcontainer/seccomp" "github.com/opencontainers/runc/libcontainer/seccomp"
@@ -156,5 +157,5 @@ func (l *linuxSetnsInit) Init() error {
if err := utils.UnsafeCloseFrom(l.config.PassedFilesCount + 3); err != nil { if err := utils.UnsafeCloseFrom(l.config.PassedFilesCount + 3); err != nil {
return err return err
} }
return system.Exec(name, l.config.Args, l.config.Env) return linux.Exec(name, l.config.Args, l.config.Env)
} }

View File

@@ -11,6 +11,7 @@ import (
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
"golang.org/x/sys/unix" "golang.org/x/sys/unix"
"github.com/opencontainers/runc/internal/linux"
"github.com/opencontainers/runc/libcontainer/apparmor" "github.com/opencontainers/runc/libcontainer/apparmor"
"github.com/opencontainers/runc/libcontainer/configs" "github.com/opencontainers/runc/libcontainer/configs"
"github.com/opencontainers/runc/libcontainer/keys" "github.com/opencontainers/runc/libcontainer/keys"
@@ -298,5 +299,5 @@ func (l *linuxStandardInit) Init() error {
if err := utils.UnsafeCloseFrom(l.config.PassedFilesCount + 3); err != nil { if err := utils.UnsafeCloseFrom(l.config.PassedFilesCount + 3); err != nil {
return err return err
} }
return system.Exec(name, l.config.Args, l.config.Env) return linux.Exec(name, l.config.Args, l.config.Env)
} }

View File

@@ -32,15 +32,6 @@ func (p ParentDeathSignal) Set() error {
return SetParentDeathSignal(uintptr(p)) return SetParentDeathSignal(uintptr(p))
} }
func Exec(cmd string, args []string, env []string) error {
for {
err := unix.Exec(cmd, args, env)
if err != unix.EINTR {
return &os.PathError{Op: "exec", Path: cmd, Err: err}
}
}
}
func SetParentDeathSignal(sig uintptr) error { func SetParentDeathSignal(sig uintptr) error {
if err := unix.Prctl(unix.PR_SET_PDEATHSIG, sig, 0, 0, 0); err != nil { if err := unix.Prctl(unix.PR_SET_PDEATHSIG, sig, 0, 0, 0); err != nil {
return err return err