Re:Linux Container Internals
by archrabbit on Tuesday June 06, 2017 @03:24AM
(#14495402)
Sure, there is definitely a lot of possible improvements for the code examples, like avoiding `clone` on a heap allocated strings, etc. I had some really odd issues when passing a statically allocated strings to the `libc` functions (the function's arguments from the previous calls ended up concatenated in the later function's invocations, just use `strace` to observe that behavior).
A lot of the complexity here is that you're interfacing with C, which is inherently unsafe, and cdecl is very simple in what can be passed. (And stuff like POSIX file paths are just hard to statically type around, because they're not text strings.) Normally, you'd write some wrappers (which the original author is well on the way to), and the rest of the code should look much simpler.
Similarly here:
The clone isn't needed; you can simply borrow oldrootfs: If you change rootfs in both pivot_root and sys_pivot_root to a &str, you can then call it as just which is simpler than (I generally find that taking &str is simpler than String, if you're not going to modify the String object.)