1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2025-02-08 05:57:26 +03:00

binfmt-util: split out binfmt_mounted()

No functional changes, just refactoring and preparation for later
commits.
This commit is contained in:
Yu Watanabe 2022-12-10 11:25:28 +09:00
parent dc1752ea72
commit a51a9684c9

View File

@ -5,10 +5,29 @@
#include <sys/vfs.h>
#include "binfmt-util.h"
#include "errno-util.h"
#include "fd-util.h"
#include "fileio.h"
#include "missing_magic.h"
#include "stat-util.h"
static int binfmt_mounted(void) {
_cleanup_close_ int fd = -EBADF;
int r;
fd = RET_NERRNO(open("/proc/sys/fs/binfmt_misc", O_CLOEXEC | O_DIRECTORY | O_PATH));
if (fd == -ENOENT)
return false;
if (fd < 0)
return fd;
r = fd_is_fs_type(fd, BINFMTFS_MAGIC);
if (r <= 0)
return r;
return true;
}
int disable_binfmt(void) {
int r;
@ -18,13 +37,13 @@ int disable_binfmt(void) {
* We are a bit careful here, since binfmt_misc might still be an autofs which we don't want to
* trigger. */
r = path_is_fs_type("/proc/sys/fs/binfmt_misc", BINFMTFS_MAGIC);
if (r == 0 || r == -ENOENT) {
r = binfmt_mounted();
if (r < 0)
return log_warning_errno(r, "Failed to determine whether binfmt_misc is mounted: %m");
if (r == 0) {
log_debug("binfmt_misc is not mounted, not detaching entries.");
return 0;
}
if (r < 0)
return log_warning_errno(r, "Failed to determine whether binfmt_misc is mounted: %m");
r = write_string_file("/proc/sys/fs/binfmt_misc/status", "-1", WRITE_STRING_FILE_DISABLE_BUFFER);
if (r < 0)