hughesjr / rpms / docker

Forked from rpms/docker 4 years ago
Clone

Blame SOURCES/dev.patch

311a84
From 40b0f129f5a6e005a949dc0ba808fb9ee557ebe4 Mon Sep 17 00:00:00 2001
311a84
From: Mrunal Patel <mrunalp@gmail.com>
311a84
Date: Fri, 9 Oct 2015 17:57:44 -0400
311a84
Subject: [PATCH] Cherry pick changes for allowing /dev mount from host
311a84
311a84
docker #16639
311a84
311a84
runc commit id c9d58506297e
311a84
311a84
Signed-off-by: Mrunal Patel <mrunalp@gmail.com>
311a84
---
311a84
 daemon/execdriver/native/create.go                 |  1 +
311a84
 .../runc/libcontainer/rootfs_linux.go              | 26 +++++++++++++---------
311a84
 2 files changed, 17 insertions(+), 10 deletions(-)
311a84
311a84
diff --git a/daemon/execdriver/native/create.go b/daemon/execdriver/native/create.go
311a84
index bbc83fe..ca8d7fd 100644
311a84
--- a/daemon/execdriver/native/create.go
311a84
+++ b/daemon/execdriver/native/create.go
311a84
@@ -234,6 +234,7 @@ func (d *driver) setupMounts(container *configs.Config, c *execdriver.Command) e
311a84
 	for _, m := range container.Mounts {
311a84
 		if _, ok := userMounts[m.Destination]; !ok {
311a84
 			if mountDev && strings.HasPrefix(m.Destination, "/dev/") {
311a84
+				container.Devices = nil
311a84
 				continue
311a84
 			}
311a84
 			defaultMounts = append(defaultMounts, m)
311a84
diff --git a/vendor/src/github.com/opencontainers/runc/libcontainer/rootfs_linux.go b/vendor/src/github.com/opencontainers/runc/libcontainer/rootfs_linux.go
311a84
index a211d8d..9fd7058 100644
311a84
--- a/vendor/src/github.com/opencontainers/runc/libcontainer/rootfs_linux.go
311a84
+++ b/vendor/src/github.com/opencontainers/runc/libcontainer/rootfs_linux.go
311a84
@@ -27,6 +27,8 @@ func setupRootfs(config *configs.Config, console *linuxConsole) (err error) {
311a84
 	if err := prepareRoot(config); err != nil {
311a84
 		return newSystemError(err)
311a84
 	}
311a84
+
311a84
+	setupDev := len(config.Devices) == 0
311a84
 	for _, m := range config.Mounts {
311a84
 		for _, precmd := range m.PremountCmds {
311a84
 			if err := mountCmd(precmd); err != nil {
311a84
@@ -43,14 +45,16 @@ func setupRootfs(config *configs.Config, console *linuxConsole) (err error) {
311a84
 			}
311a84
 		}
311a84
 	}
311a84
-	if err := createDevices(config); err != nil {
311a84
-		return newSystemError(err)
311a84
-	}
311a84
-	if err := setupPtmx(config, console); err != nil {
311a84
-		return newSystemError(err)
311a84
-	}
311a84
-	if err := setupDevSymlinks(config.Rootfs); err != nil {
311a84
-		return newSystemError(err)
311a84
+	if !setupDev {
311a84
+		if err := createDevices(config); err != nil {
311a84
+			return newSystemError(err)
311a84
+		}
311a84
+		if err := setupPtmx(config, console); err != nil {
311a84
+			return newSystemError(err)
311a84
+		}
311a84
+		if err := setupDevSymlinks(config.Rootfs); err != nil {
311a84
+			return newSystemError(err)
311a84
+		}
311a84
 	}
311a84
 	if err := syscall.Chdir(config.Rootfs); err != nil {
311a84
 		return newSystemError(err)
311a84
@@ -63,8 +67,10 @@ func setupRootfs(config *configs.Config, console *linuxConsole) (err error) {
311a84
 	if err != nil {
311a84
 		return newSystemError(err)
311a84
 	}
311a84
-	if err := reOpenDevNull(config.Rootfs); err != nil {
311a84
-		return newSystemError(err)
311a84
+	if !setupDev {
311a84
+		if err := reOpenDevNull(config.Rootfs); err != nil {
311a84
+			return newSystemError(err)
311a84
+		}
311a84
 	}
311a84
 	if config.Readonlyfs {
311a84
 		if err := setReadonly(); err != nil {