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:
parent
dc1752ea72
commit
a51a9684c9
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user