The following pull request was submitted through Github.
It can be accessed and reviewed at: https://github.com/lxc/lxc/pull/1069

This e-mail was sent by the LXC bot, direct replies will not reach the author
unless they happen to be subscribed to this list.

=== Description (from pull-request) ===
Add flag in mount_entry to skip NODEV in case of a persistent dev entry

Since 1.0.7 persistent /dev mount entries that lives in a parent filesystems with nodev flag will inherit the flag even adding "dev" to mount options and cause access denied errors for /dev/urandom and /dev/null, with this change the mount option will be respected when a persistent dev is used.
 
Signed-off-by: Rodrigo Vaz <rodr...@heroku.com>
From ae7a770e0a73aa3c413d6b6c10a65eb2c7897c26 Mon Sep 17 00:00:00 2001
From: Rodrigo Vaz <rodrigo....@gmail.com>
Date: Fri, 1 Jul 2016 18:34:11 -0700
Subject: [PATCH] Add flag in mount_entry to skip NODEV in case of a persistent
 dev entry

Signed-off-by: Rodrigo Vaz <rodr...@heroku.com>
---
 src/lxc/conf.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/lxc/conf.c b/src/lxc/conf.c
index e8dfaae..009aac8 100644
--- a/src/lxc/conf.c
+++ b/src/lxc/conf.c
@@ -1634,7 +1634,7 @@ static char *get_field(char *src, int nfields)
 
 static int mount_entry(const char *fsname, const char *target,
                       const char *fstype, unsigned long mountflags,
-                      const char *data, int optional, const char *rootfs)
+                      const char *data, int optional, int dev, const char 
*rootfs)
 {
 #ifdef HAVE_STATVFS
        struct statvfs sb;
@@ -1663,7 +1663,7 @@ static int mount_entry(const char *fsname, const char 
*target,
                        unsigned long required_flags = rqd_flags;
                        if (sb.f_flag & MS_NOSUID)
                                required_flags |= MS_NOSUID;
-                       if (sb.f_flag & MS_NODEV)
+                       if (sb.f_flag & MS_NODEV && !dev)
                                required_flags |= MS_NODEV;
                        if (sb.f_flag & MS_RDONLY)
                                required_flags |= MS_RDONLY;
@@ -1785,6 +1785,7 @@ static inline int mount_entry_on_generic(struct mntent 
*mntent,
        char *mntdata;
        int ret;
        bool optional = hasmntopt(mntent, "optional") != NULL;
+       bool dev = hasmntopt(mntent, "dev") != NULL;
 
        char *rootfs_path = NULL;
        if (rootfs && rootfs->path)
@@ -1803,7 +1804,7 @@ static inline int mount_entry_on_generic(struct mntent 
*mntent,
        }
 
        ret = mount_entry(mntent->mnt_fsname, path, mntent->mnt_type, mntflags,
-                         mntdata, optional, rootfs_path);
+                         mntdata, optional, dev, rootfs_path);
 
        free(mntdata);
        return ret;
_______________________________________________
lxc-devel mailing list
lxc-devel@lists.linuxcontainers.org
http://lists.linuxcontainers.org/listinfo/lxc-devel

Reply via email to