Commit 36c4cba9 authored by Kirill Tkhai's avatar Kirill Tkhai Committed by Pavel Emelyanov

binfmt_misc: Skip dumping if it's not virtual

Similar to devtmpfs and devpts, skip binfmt_misc
mount if it's not virtual.
Signed-off-by: 's avatarKirill Tkhai <ktkhai@odin.com>
Acked-by: 's avatarAndrew Vagin <avagin@virtuozzo.com>
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent 505896e6
......@@ -45,4 +45,8 @@
#define PROC_SUPER_MAGIC 0x9fa0
#endif
#ifndef BINFMTFS_MAGIC
#define BINFMTFS_MAGIC 0x42494e4d
#endif
#endif /* __CR_FS_MAGIC_H__ */
......@@ -32,6 +32,7 @@ extern struct kerndat_s kdat;
enum {
KERNDAT_FS_STAT_DEVPTS,
KERNDAT_FS_STAT_DEVTMPFS,
KERNDAT_FS_STAT_BINFMT_MISC,
KERNDAT_FS_STAT_MAX
};
......
......@@ -92,6 +92,11 @@ static dev_t get_host_dev(unsigned int which)
.path = "/dev",
.magic = TMPFS_MAGIC,
},
[KERNDAT_FS_STAT_BINFMT_MISC] = {
.name = "binfmt_misc",
.path = "/proc/sys/fs/binfmt_misc",
.magic = BINFMTFS_MAGIC,
},
};
if (which >= KERNDAT_FS_STAT_MAX) {
......
......@@ -1291,6 +1291,11 @@ static int devtmpfs_restore(struct mount_info *pm)
return ret;
}
static int binfmt_misc_virtual(struct mount_info *pm)
{
return kerndat_fs_virtualized(KERNDAT_FS_STAT_BINFMT_MISC, pm->s_dev);
}
static int parse_binfmt_misc_entry(struct bfd *f, BinfmtMiscEntry *bme)
{
while (1) {
......@@ -1375,9 +1380,13 @@ err:
static int binfmt_misc_dump(struct mount_info *pm)
{
struct cr_img *img;
int fd, ret = -1;
struct dirent *de;
DIR *fdir = NULL;
int fd, ret;
ret = binfmt_misc_virtual(pm);
if (ret <= 0)
return ret;
fd = open_mountpoint(pm);
if (fd < 0)
......@@ -1389,6 +1398,7 @@ static int binfmt_misc_dump(struct mount_info *pm)
return -1;
}
ret = -1;
img = open_image(CR_FD_BINFMT_MISC, O_DUMP, pm->s_dev);
if (!img)
goto out;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment