/* SPDX-License-Identifier: LGPL-2.1-or-later */
#include <linux/magic.h>
+#include <sched.h>
#include <sys/mount.h>
#include <unistd.h>
int wipe_fully_visible_api_fs(int mntns_fd) {
_cleanup_close_ int orig_mntns_fd = -EBADF;
- int r, rr;
+ int r;
log_debug("Wiping fully visible API FS");
if (orig_mntns_fd < 0)
return log_error_errno(orig_mntns_fd, "Failed to pin originating mount namespace: %m");
- r = namespace_enter(/* pidns_fd= */ -EBADF,
- mntns_fd,
- /* netns_fd= */ -EBADF,
- /* userns_fd= */ -EBADF,
- /* root_fd= */ -EBADF);
- if (r < 0)
- return log_error_errno(r, "Failed to enter mount namespace: %m");
+ if (setns(mntns_fd, CLONE_NEWNS) < 0)
+ return log_error_errno(errno, "Failed to enter mount namespace: %m");
- rr = do_wipe_fully_visible_api_fs();
+ r = do_wipe_fully_visible_api_fs();
- r = namespace_enter(/* pidns_fd= */ -EBADF,
- orig_mntns_fd,
- /* netns_fd= */ -EBADF,
- /* userns_fd= */ -EBADF,
- /* root_fd= */ -EBADF);
- if (r < 0)
- return log_error_errno(r, "Failed to enter original mount namespace: %m");
+ if (setns(orig_mntns_fd, CLONE_NEWNS) < 0)
+ return log_error_errno(errno, "Failed to enter original mount namespace: %m");
- return rr;
+ return r;
}