Skip to content

Commit

Permalink
Merge pull request #16016 from Luap99/netns-cleanup
Browse files Browse the repository at this point in the history
cleanup: always delete netns mount
  • Loading branch information
openshift-merge-robot authored Oct 1, 2022
2 parents 63c69f3 + eb7f54e commit 84aff62
Showing 1 changed file with 12 additions and 4 deletions.
16 changes: 12 additions & 4 deletions libpod/networking_linux.go
Original file line number Diff line number Diff line change
Expand Up @@ -695,23 +695,31 @@ func (r *Runtime) teardownNetNS(ctr *Container) error {
// do not return an error otherwise we would prevent network cleanup
logrus.Errorf("failed to free gvproxy machine ports: %v", err)
}
if err := r.teardownCNI(ctr); err != nil {
return err
}

// Do not check the error here, we want to always umount the netns
// This will ensure that the container interface will be deleted
// even when there is a CNI or netavark bug.
prevErr := r.teardownCNI(ctr)

// First unmount the namespace
if err := netns.UnmountNS(ctr.state.NetNS); err != nil {
if prevErr != nil {
logrus.Error(prevErr)
}
return fmt.Errorf("unmounting network namespace for container %s: %w", ctr.ID(), err)
}

// Now close the open file descriptor
if err := ctr.state.NetNS.Close(); err != nil {
if prevErr != nil {
logrus.Error(prevErr)
}
return fmt.Errorf("closing network namespace for container %s: %w", ctr.ID(), err)
}

ctr.state.NetNS = nil

return nil
return prevErr
}

func getContainerNetNS(ctr *Container) (string, *Container, error) {
Expand Down

0 comments on commit 84aff62

Please sign in to comment.