diff options
author | Fabricio Voznika <fvoznika@google.com> | 2018-05-02 17:39:12 -0700 |
---|---|---|
committer | Shentubot <shentubot@google.com> | 2018-05-02 17:40:01 -0700 |
commit | a61def1b368a9042e346787008e12770e4e67b35 (patch) | |
tree | 471e9c844c6dc5d6cd8e6949a47d78c52132d3b0 | |
parent | 6c061ad913fce6fbfe9a98c0fc1f5b67fad1b9b0 (diff) |
Remove detach for exec options
Detachable exec commands are handled in the client entirely and the detach option is not used anymore.
PiperOrigin-RevId: 195181272
Change-Id: I6e82a2876d2c173709c099be59670f71702e5bf0
-rw-r--r-- | pkg/sentry/control/proc.go | 9 | ||||
-rw-r--r-- | runsc/cmd/exec.go | 3 | ||||
-rw-r--r-- | runsc/sandbox/sandbox_test.go | 8 |
3 files changed, 2 insertions, 18 deletions
diff --git a/pkg/sentry/control/proc.go b/pkg/sentry/control/proc.go index 7d06a1d04..d77b30c90 100644 --- a/pkg/sentry/control/proc.go +++ b/pkg/sentry/control/proc.go @@ -72,9 +72,6 @@ type ExecArgs struct { // Capabilities is the list of capabilities to give to the process. Capabilities *auth.TaskCapabilities - // Detach indicates whether Exec should detach once the process starts. - Detach bool - // FilePayload determines the files to give to the new process. urpc.FilePayload } @@ -135,12 +132,6 @@ func (proc *Proc) Exec(args *ExecArgs, waitStatus *uint32) error { return err } - // If we're supposed to detach, don't wait for the process to exit. - if args.Detach { - *waitStatus = 0 - return nil - } - // Wait for completion. newTG.WaitExited() *waitStatus = newTG.ExitStatus().Status() diff --git a/runsc/cmd/exec.go b/runsc/cmd/exec.go index 8379f552d..576031b5b 100644 --- a/runsc/cmd/exec.go +++ b/runsc/cmd/exec.go @@ -99,7 +99,6 @@ func (ex *Exec) Execute(_ context.Context, f *flag.FlagSet, args ...interface{}) if err != nil { Fatalf("error parsing process spec: %v", err) } - e.Detach = ex.detach conf := args[0].(*boot.Config) waitStatus := args[1].(*syscall.WaitStatus) @@ -123,7 +122,7 @@ func (ex *Exec) Execute(_ context.Context, f *flag.FlagSet, args ...interface{}) // executed. If detach was specified, starts a child in non-detach mode, // write the child's PID to the pid file. So when the container returns, the // child process will also return and signal containerd. - if e.Detach { + if ex.detach { binPath, err := specutils.BinPath() if err != nil { Fatalf("error getting bin path: %v", err) diff --git a/runsc/sandbox/sandbox_test.go b/runsc/sandbox/sandbox_test.go index 6c71cac30..6e3125b7b 100644 --- a/runsc/sandbox/sandbox_test.go +++ b/runsc/sandbox/sandbox_test.go @@ -365,7 +365,6 @@ func TestExec(t *testing.T) { Envv: []string{"PATH=" + os.Getenv("PATH")}, WorkingDirectory: "/", KUID: uid, - Detach: false, } // Verify that "sleep 100" and "sleep 5" are running after exec. @@ -472,7 +471,6 @@ func TestCapabilities(t *testing.T) { KUID: uid, KGID: gid, Capabilities: &auth.TaskCapabilities{}, - Detach: true, } // "exe" should fail because we don't have the necessary permissions. @@ -484,14 +482,10 @@ func TestCapabilities(t *testing.T) { execArgs.Capabilities = &auth.TaskCapabilities{ EffectiveCaps: auth.CapabilitySetOf(linux.CAP_DAC_OVERRIDE), } - // First, start running exec. + // "exe" should not fail this time. if _, err := s.Execute(&execArgs); err != nil { t.Fatalf("sandbox failed to exec %v: %v", execArgs, err) } - - if err := waitForProcessList(s, expectedPL); err != nil { - t.Error(err) - } } // Test that an tty FD is sent over the console socket if one is provided. |