aboutsummaryrefslogtreecommitdiff
path: root/cmd/podman/exec.go
diff options
context:
space:
mode:
authorGiuseppe Scrivano <gscrivan@redhat.com>2019-03-25 23:15:24 +0100
committerGiuseppe Scrivano <gscrivan@redhat.com>2019-03-27 14:04:35 +0100
commitaacc5a863221097d3deafaf890d525da814b0dec (patch)
tree556c67345452d996dc6fd3fe87a45cbb264ef879 /cmd/podman/exec.go
parentfcbca91dca6d958681505569a74cf5739b9cacdc (diff)
downloadpodman-aacc5a863221097d3deafaf890d525da814b0dec.tar.gz
podman-aacc5a863221097d3deafaf890d525da814b0dec.tar.bz2
podman-aacc5a863221097d3deafaf890d525da814b0dec.zip
rootless: fix regression when using exec on old containers
fallback to the previous behavior of joining only the user namespace, when we cannot join the conmon userns+mount namespaces. Closes: https://github.com/containers/libpod/issues/2673 Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Diffstat (limited to 'cmd/podman/exec.go')
-rw-r--r--cmd/podman/exec.go19
1 files changed, 12 insertions, 7 deletions
diff --git a/cmd/podman/exec.go b/cmd/podman/exec.go
index a6afbf75a..fc1c76e9f 100644
--- a/cmd/podman/exec.go
+++ b/cmd/podman/exec.go
@@ -112,14 +112,19 @@ func execCmd(c *cliconfig.ExecValues) error {
var ret int
data, err := ioutil.ReadFile(ctr.Config().ConmonPidFile)
- if err != nil {
- return errors.Wrapf(err, "cannot read conmon PID file %q", ctr.Config().ConmonPidFile)
- }
- conmonPid, err := strconv.Atoi(string(data))
- if err != nil {
- return errors.Wrapf(err, "cannot parse PID %q", data)
+ if err == nil {
+ conmonPid, err := strconv.Atoi(string(data))
+ if err != nil {
+ return errors.Wrapf(err, "cannot parse PID %q", data)
+ }
+ became, ret, err = rootless.JoinDirectUserAndMountNS(uint(conmonPid))
+ } else {
+ pid, err := ctr.PID()
+ if err != nil {
+ return err
+ }
+ became, ret, err = rootless.JoinNS(uint(pid), c.PreserveFDs)
}
- became, ret, err = rootless.JoinDirectUserAndMountNS(uint(conmonPid))
if err != nil {
return err
}