Skip to content

Commit

Permalink
binfmt_misc: Skip dumping if it's not virtual
Browse files Browse the repository at this point in the history
Similar to devtmpfs and devpts, skip binfmt_misc
mount if it's not virtual.

Signed-off-by: Kirill Tkhai <ktkhai@odin.com>
Acked-by: Andrew Vagin <avagin@virtuozzo.com>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
  • Loading branch information
Kirill Tkhai authored and xemul committed Dec 23, 2015
1 parent 505896e commit 36c4cba
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 1 deletion.
4 changes: 4 additions & 0 deletions include/fs-magic.h
Expand Up @@ -45,4 +45,8 @@
#define PROC_SUPER_MAGIC 0x9fa0
#endif

#ifndef BINFMTFS_MAGIC
#define BINFMTFS_MAGIC 0x42494e4d
#endif

#endif /* __CR_FS_MAGIC_H__ */
1 change: 1 addition & 0 deletions include/kerndat.h
Expand Up @@ -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
};
Expand Down
5 changes: 5 additions & 0 deletions kerndat.c
Expand Up @@ -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) {
Expand Down
12 changes: 11 additions & 1 deletion mount.c
Expand Up @@ -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) {
Expand Down Expand Up @@ -1375,9 +1380,13 @@ static int dump_binfmt_misc_entry(int dfd, char *name, struct cr_img *img)
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)
Expand All @@ -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;
Expand Down

0 comments on commit 36c4cba

Please sign in to comment.