summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorFabricio Voznika <fvoznika@google.com>2018-05-02 17:39:12 -0700
committerShentubot <shentubot@google.com>2018-05-02 17:40:01 -0700
commita61def1b368a9042e346787008e12770e4e67b35 (patch)
tree471e9c844c6dc5d6cd8e6949a47d78c52132d3b0
parent6c061ad913fce6fbfe9a98c0fc1f5b67fad1b9b0 (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.go9
-rw-r--r--runsc/cmd/exec.go3
-rw-r--r--runsc/sandbox/sandbox_test.go8
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.