Description
The Exec() function in pkg/unikontainers/unikontainers.go performs multiple setup operations in sequence:
- Network setup (TAP device creation)
- Rootfs preparation (preSetup)
- Monitor rootfs preparation (mount creation)
- Rootfs post-setup
- Shared filesystem setup (virtiofs/9pfs)
- Many other operations...
Currently, if any step fails after network setup (line 405), TAP devices are never cleaned up. Similar issues exist for rootfs and shared filesystem mounts.
- Line 405: Network setup, no defer cleanup
- Line 507-530: Rootfs setup, no rollback on failure
- Line 522: prepareMonRootfs, no cleanup
- Line 570: prepareVSockEnvironment, no cleanup
all setup steps should register cleanup functions that execute in reverse order if any error occurs.
Testing
- Add tests that verify cleanup occurs when Exec fails at each setup stage
- Verify TAP devices are cleaned up
- Verify mounts are unmounted
Description
The
Exec()function inpkg/unikontainers/unikontainers.goperforms multiple setup operations in sequence:Currently, if any step fails after network setup (line 405), TAP devices are never cleaned up. Similar issues exist for rootfs and shared filesystem mounts.
all setup steps should register cleanup functions that execute in reverse order if any error occurs.
Testing