All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Eric W. Biederman" <ebiederm@xmission.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: "H. Peter Anvin" <hpa@zytor.com>,
	Peter Hurley <peter@hurleysoftware.com>, Greg KH <greg@kroah.com>,
	Jiri Slaby <jslaby@suse.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Andy Lutomirski <luto@amacapital.net>,
	Florian Weimer <fw@deneb.enyo.de>,
	Al Viro <viro@zeniv.linux.org.uk>,
	Serge Hallyn <serge.hallyn@ubuntu.com>,
	Jann Horn <jann@thejh.net>,
	"security@kernel.org" <security@kernel.org>,
	security@ubuntu.com, security@debian.org,
	Willy Tarreau <w@1wt.eu>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	"Eric W. Biederman" <ebiederm@xmission.com>
Subject: [PATCH 01/13] devpts: Teach /dev/ptmx to find the associated devpts via path lookup
Date: Mon,  4 Apr 2016 20:29:17 -0500	[thread overview]
Message-ID: <1459819769-30387-1-git-send-email-ebiederm@xmission.com> (raw)
In-Reply-To: <878u0s3orx.fsf_-_@x220.int.ebiederm.org>

This is in preparation for forcing each mount of devpts to be a
distinct filesystem.  The goal of this change is to have as few user
visible changes from the kernel today as possible.

On each open of /dev/ptmx look at the relative path pts and see if
devpts is mounted there.

If the filesystem found via the path lookup is the system devpts
do exactly what we do today.

If the filesystem found is not the system devpts make it appear
to the rest of the system that the /dev/pts/ptmx node was opened.
This includes respecting the permission checks of /dev/pts/ptmx
and updating the file's path to point to /dev/pts/ptmx.

In practice I expect the permission checks are a non-issue as the
permissions on /dev/ptmx and /dev/pts/ptmx are always 0666.  If
someone happens to change the permission on /dev/pts/ptmx is seems
important to honor them for the sake of backwards compatibility.  As
/dev/ptmx can be bind mounted to set next to any devpts filesystem not
honoring the permissions would provide a nice permission bypass under
the right circumstances if we did not check the permissions.

Similarly reflect the instance of devpts that was opened in f_path so
that we preserve the only way available today to test if someone is
attempting to confuse a pty creating program.

This winds up using 3 new vfs helpers path_parent, path_pts, and
update_file_path.

Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
---
 drivers/tty/pty.c         |  4 +++
 fs/devpts/inode.c         | 81 +++++++++++++++++++++++++++++++++++++++++++++++
 fs/namei.c                | 64 ++++++++++++++++++++++++++++++-------
 fs/open.c                 | 19 +++++++++++
 include/linux/devpts_fs.h |  2 ++
 include/linux/fs.h        |  2 ++
 include/linux/namei.h     |  3 ++
 7 files changed, 164 insertions(+), 11 deletions(-)

diff --git a/drivers/tty/pty.c b/drivers/tty/pty.c
index e16a49b507ef..557858ef00f5 100644
--- a/drivers/tty/pty.c
+++ b/drivers/tty/pty.c
@@ -725,6 +725,10 @@ static int ptmx_open(struct inode *inode, struct file *filp)
 	int retval;
 	int index;
 
+	inode = devpts_ptmx(inode, filp);
+	if (IS_ERR(inode))
+		return PTR_ERR(inode);
+
 	nonseekable_open(inode, filp);
 
 	/* We refuse fsnotify events on ptmx, since it's a shared resource */
diff --git a/fs/devpts/inode.c b/fs/devpts/inode.c
index 655f21f99160..c14d51795577 100644
--- a/fs/devpts/inode.c
+++ b/fs/devpts/inode.c
@@ -17,6 +17,7 @@
 #include <linux/fs.h>
 #include <linux/sched.h>
 #include <linux/namei.h>
+#include <linux/fs_struct.h>
 #include <linux/slab.h>
 #include <linux/mount.h>
 #include <linux/tty.h>
@@ -136,6 +137,86 @@ static inline struct pts_fs_info *DEVPTS_SB(struct super_block *sb)
 	return sb->s_fs_info;
 }
 
+#ifdef CONFIG_DEVPTS_MULTIPLE_INSTANCES
+static int devpts_path_ptmx(struct file *filp)
+{
+	struct pts_fs_info *fsi;
+	struct path root, path;
+	struct dentry *old;
+	int err = -ENOENT;
+	int ret;
+
+	/* Can the pts filesystem be found with a path walk? */
+	path = filp->f_path;
+	path_get(&path);
+	get_fs_root(current->fs, &root);
+	ret = path_parent(&root, &path);
+	path_put(&root);
+	if (ret != 1)
+		goto fail;
+
+	/* Remember the result of this permission check for later */
+	ret = inode_permission(path.dentry->d_inode, MAY_EXEC);
+	if (path_pts(&path))
+		goto fail;
+
+	/* Is path the root of a devpts filesystem? */
+	if ((path.mnt->mnt_sb->s_magic != DEVPTS_SUPER_MAGIC) ||
+	    (path.mnt->mnt_root != path.mnt->mnt_sb->s_root))
+		goto fail;
+	fsi = DEVPTS_SB(path.mnt->mnt_sb);
+
+	/* Get out if the path walk resulted in the default devpts instance */
+	if (devpts_mnt->mnt_sb == path.mnt->mnt_sb)
+		goto fail;
+
+	/* Don't allow bypassing the existing /dev/pts/ptmx permission check */
+	err = ret;
+	if (!err)
+		err = inode_permission(path.dentry->d_inode, MAY_EXEC);
+	if (!err)
+		err = inode_permission(fsi->ptmx_dentry->d_inode,
+				       ACC_MODE(filp->f_flags));
+	if (err)
+		goto fail;
+
+	/* Advance path to the ptmx dentry */
+	old = path.dentry;
+	path.dentry = dget(fsi->ptmx_dentry);
+	dput(old);
+
+	/* Make it look like /dev/pts/ptmx was opened */
+	err = update_file_path(filp, &path);
+	if (err)
+		goto fail;
+
+	return 0;
+fail:
+	path_put(&path);
+	return err;
+}
+#else
+static inline int devpts_path_ptmx(struct file *filp)
+{
+	return -ENOENT;
+}
+#endif
+
+struct inode *devpts_ptmx(struct inode *inode, struct file *filp)
+{
+	int err;
+	if (inode->i_sb->s_magic == DEVPTS_SUPER_MAGIC)
+		return inode;
+
+	err = devpts_path_ptmx(filp);
+	if (err == 0)
+		return filp->f_inode;
+	if (err != -ENOENT)
+		return ERR_PTR(err);
+
+	return inode;
+}
+
 static inline struct super_block *pts_sb_from_inode(struct inode *inode)
 {
 #ifdef CONFIG_DEVPTS_MULTIPLE_INSTANCES
diff --git a/fs/namei.c b/fs/namei.c
index 794f81dce766..afb5137ca199 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -1415,29 +1415,41 @@ static void follow_mount(struct path *path)
 	}
 }
 
-static int follow_dotdot(struct nameidata *nd)
+int path_parent(struct path *root, struct path *path)
 {
+	int ret = 0;
+
 	while(1) {
-		struct dentry *old = nd->path.dentry;
+		struct dentry *old = path->dentry;
 
-		if (nd->path.dentry == nd->root.dentry &&
-		    nd->path.mnt == nd->root.mnt) {
+		if (old == root->dentry &&
+		    path->mnt == root->mnt) {
 			break;
 		}
-		if (nd->path.dentry != nd->path.mnt->mnt_root) {
+		if (old != path->mnt->mnt_root) {
 			/* rare case of legitimate dget_parent()... */
-			nd->path.dentry = dget_parent(nd->path.dentry);
+			path->dentry = dget_parent(path->dentry);
 			dput(old);
-			if (unlikely(!path_connected(&nd->path)))
+			if (unlikely(!path_connected(path)))
 				return -ENOENT;
+			ret = 1;
 			break;
 		}
-		if (!follow_up(&nd->path))
+		if (!follow_up(path))
 			break;
 	}
-	follow_mount(&nd->path);
-	nd->inode = nd->path.dentry->d_inode;
-	return 0;
+	follow_mount(path);
+	return ret;
+}
+
+static int follow_dotdot(struct nameidata *nd)
+{
+	int ret = path_parent(&nd->root, &nd->path);
+	if (ret >= 0) {
+		ret = 0;
+		nd->inode = nd->path.dentry->d_inode;
+	}
+	return ret;
 }
 
 /*
@@ -2374,6 +2386,36 @@ struct dentry *lookup_one_len_unlocked(const char *name,
 }
 EXPORT_SYMBOL(lookup_one_len_unlocked);
 
+#ifdef CONFIG_UNIX98_PTYS
+int path_pts(struct path *path)
+{
+	struct dentry *child, *parent = path->dentry;
+	struct qstr this;
+
+	if (!d_can_lookup(parent))
+		return -ENOENT;
+
+	this.name = "pts";
+	this.len = 3;
+	this.hash = full_name_hash(this.name, this.len);
+	if (parent->d_flags & DCACHE_OP_HASH) {
+		int err = parent->d_op->d_hash(parent, &this);
+		if (err < 0)
+			return err;
+	}
+	inode_lock(parent->d_inode);
+	child = d_lookup(parent, &this);
+	inode_unlock(parent->d_inode);
+	if (!child)
+		return -ENOENT;
+
+	path->dentry = child;
+	dput(parent);
+	follow_mount(path);
+	return 0;
+}
+#endif
+
 int user_path_at_empty(int dfd, const char __user *name, unsigned flags,
 		 struct path *path, int *empty)
 {
diff --git a/fs/open.c b/fs/open.c
index 17cb6b1dab75..e1ed78fa474b 100644
--- a/fs/open.c
+++ b/fs/open.c
@@ -679,6 +679,24 @@ int open_check_o_direct(struct file *f)
 	return 0;
 }
 
+int update_file_path(struct file *filp, struct path *path)
+{
+	/* Only valid during f_op->open, and even in open use very carefully */
+	struct path old;
+	struct inode *inode;
+
+	if (filp->f_mode & FMODE_WRITER)
+		return -EINVAL;
+
+	old = filp->f_path;
+	inode = path->dentry->d_inode;
+	filp->f_path = *path;
+	filp->f_inode = inode;
+	filp->f_mapping = inode->i_mapping;
+	path_put(&old);
+	return 0;
+}
+
 static int do_dentry_open(struct file *f,
 			  struct inode *inode,
 			  int (*open)(struct inode *, struct file *),
@@ -736,6 +754,7 @@ static int do_dentry_open(struct file *f,
 		error = open(inode, f);
 		if (error)
 			goto cleanup_all;
+		inode = f->f_inode;
 	}
 	if ((f->f_mode & (FMODE_READ | FMODE_WRITE)) == FMODE_READ)
 		i_readcount_inc(inode);
diff --git a/include/linux/devpts_fs.h b/include/linux/devpts_fs.h
index e0ee0b3000b2..260190690674 100644
--- a/include/linux/devpts_fs.h
+++ b/include/linux/devpts_fs.h
@@ -17,6 +17,8 @@
 
 #ifdef CONFIG_UNIX98_PTYS
 
+struct inode *devpts_ptmx(struct inode *inode, struct file *filp);
+
 int devpts_new_index(struct inode *ptmx_inode);
 void devpts_kill_index(struct inode *ptmx_inode, int idx);
 void devpts_add_ref(struct inode *ptmx_inode);
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 14a97194b34b..045bbfe2ecfc 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -2272,6 +2272,8 @@ extern struct filename *getname(const char __user *);
 extern struct filename *getname_kernel(const char *);
 extern void putname(struct filename *name);
 
+extern int update_file_path(struct file *filp, struct path *path);
+
 enum {
 	FILE_CREATED = 1,
 	FILE_OPENED = 2
diff --git a/include/linux/namei.h b/include/linux/namei.h
index 77d01700daf7..647d97a4869b 100644
--- a/include/linux/namei.h
+++ b/include/linux/namei.h
@@ -45,6 +45,9 @@ enum {LAST_NORM, LAST_ROOT, LAST_DOT, LAST_DOTDOT, LAST_BIND};
 #define LOOKUP_ROOT		0x2000
 #define LOOKUP_EMPTY		0x4000
 
+extern int path_parent(struct path *root, struct path *path);
+extern int path_pts(struct path *path);
+
 extern int user_path_at_empty(int, const char __user *, unsigned, struct path *, int *empty);
 
 static inline int user_path_at(int dfd, const char __user *name, unsigned flags,
-- 
2.6.3

  reply	other threads:[~2016-04-05  1:40 UTC|newest]

Thread overview: 154+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <43AD2BA7-B594-4299-95F3-D86FD38AF21B@zytor.com>
     [not found] ` <87egexpf4o.fsf@x220.int.ebiederm.org>
     [not found]   ` <CA+55aFw9Bg+Zh_T4zP487n3ieaxoMHgZ_nNJVdpSR4kQK9gQ9w@mail.gmail.com>
     [not found]     ` <1CB621EF-1647-463B-A144-D611DB150E15@zytor.com>
     [not found]       ` <20151208223135.GA8352@kroah.com>
     [not found]         ` <87oae0h2bo.fsf@x220.int.ebiederm.org>
     [not found]           ` <56677DE3.5040705@zytor.com>
     [not found]             ` <20151209012311.GA11794@kroah.com>
     [not found]               ` <84B136DF-55E4-476A-9CB2-062B15677EE5@zytor.com>
     [not found]                 ` <20151209013859.GA12442@kroah.com>
     [not found]                   ` <20151209083225.GA30452@1wt.eu>
2015-12-11 19:40                     ` [PATCH] devpts: Sensible /dev/ptmx & force newinstance Eric W. Biederman
2015-12-11 20:50                       ` Linus Torvalds
2015-12-11 21:03                         ` Eric W. Biederman
2015-12-11 21:04                       ` Al Viro
2015-12-11 21:11                         ` Eric W. Biederman
2015-12-11 21:48                           ` Andy Lutomirski
2015-12-11 22:07                             ` H. Peter Anvin
2015-12-11 22:12                               ` Andy Lutomirski
2015-12-11 22:18                                 ` H. Peter Anvin
2015-12-11 22:24                                   ` Andy Lutomirski
2015-12-11 22:29                                     ` H. Peter Anvin
2015-12-11 22:35                                 ` Eric W. Biederman
2015-12-11 22:52                                   ` Andy Lutomirski
2015-12-11 22:58                                     ` Jann Horn
2015-12-11 23:00                                       ` Andy Lutomirski
2015-12-11 23:07                                         ` H. Peter Anvin
2015-12-11 23:16                                           ` Andy Lutomirski
2015-12-11 23:30                                             ` H. Peter Anvin
2015-12-11 22:57                                   ` H. Peter Anvin
2015-12-14 19:47                       ` Peter Hurley
2015-12-14 19:55                         ` H. Peter Anvin
2015-12-19 21:13                         ` Eric W. Biederman
2015-12-20  4:11                           ` Eric W. Biederman
2015-12-20  4:35                             ` H. Peter Anvin
2015-12-20  9:42                               ` Eric W. Biederman
2015-12-21 22:03                                 ` Eric W. Biederman
2015-12-21 22:23                                   ` Linus Torvalds
2016-04-05  0:03                                     ` [PATCH 00/13] devpts: New instances for every mount Eric W. Biederman
2016-04-05  1:29                                       ` Eric W. Biederman [this message]
2016-04-05  1:29                                         ` [PATCH 02/13] devpts: More obvious check for the system devpts in pty allocation Eric W. Biederman
2016-04-05  1:29                                         ` [PATCH 03/13] devpts: Cleanup newinstance parsing Eric W. Biederman
2016-04-05  1:29                                         ` [PATCH 04/13] devpts: Stop rolling devpts_remount by hand in devpts_mount Eric W. Biederman
2016-04-05  1:29                                         ` [PATCH 05/13] devpts: Fail early (if appropriate) on overmount Eric W. Biederman
2016-04-05  1:29                                         ` [PATCH 06/13] devpts: Use the same default mode for both /dev/ptmx and dev/pts/ptmx Eric W. Biederman
2016-04-05  1:29                                         ` [PATCH 07/13] devpts: Move parse_mount_options into fill_super Eric W. Biederman
2016-04-05  1:29                                         ` [PATCH 08/13] devpts: Make devpts_kill_sb safe if fsi is NULL Eric W. Biederman
2016-04-05  1:29                                         ` [PATCH 09/13] devpts: Move the creation of /dev/pts/ptmx into fill_super Eric W. Biederman
2016-04-05  1:29                                         ` [PATCH 10/13] devpts: Simplify devpts_mount by using mount_nodev Eric W. Biederman
2016-04-05  1:29                                         ` [PATCH 11/13] vfs: Implement mount_super_once Eric W. Biederman
2016-04-05  1:29                                         ` [PATCH 12/13] devpts: Always return a distinct instance when mounting Eric W. Biederman
2016-04-05  1:29                                         ` [PATCH 13/13] devpts: Kill the DEVPTS_MULTIPLE_INSTANCE config option Eric W. Biederman
2016-04-05  2:54                                         ` [PATCH 01/13] devpts: Teach /dev/ptmx to find the associated devpts via path lookup Al Viro
2016-04-05  3:03                                           ` Al Viro
2016-04-08 18:54                                             ` Eric W. Biederman
2016-04-07 16:06                                         ` Linus Torvalds
2016-04-08 18:51                                           ` Eric W. Biederman
2016-04-08 19:05                                             ` Linus Torvalds
2016-04-08 20:05                                               ` Eric W. Biederman
2016-04-08 20:43                                               ` Andy Lutomirski
2016-04-08 21:29                                                 ` Eric W. Biederman
2016-04-08 21:54                                                   ` Linus Torvalds
2016-04-08 23:03                                                     ` Eric W. Biederman
2016-04-08 21:56                                                   ` Andy Lutomirski
2016-04-09 13:09                                             ` One Thousand Gnomes
2016-04-09 14:10                                               ` H. Peter Anvin
2016-04-09 14:45                                                 ` Eric W. Biederman
2016-04-09 22:37                                                   ` H. Peter Anvin
2016-04-10  0:01                                                     ` Linus Torvalds
2016-04-10  0:06                                                       ` H. Peter Anvin
2016-04-10  0:16                                                         ` Linus Torvalds
2016-04-10  0:44                                                           ` Andy Lutomirski
     [not found]                                                             ` <CA+55aFzs00iDkYhvFCq=AZMVcNL0+oZT4SeimTeVurJq=5ZS3A@mail.gmail.com>
2016-04-11 14:48                                                               ` H. Peter Anvin
2016-04-12  1:31                                                                 ` Al Viro
2016-04-11 20:12                                                               ` Andy Lutomirski
2016-04-11 20:10                                                                 ` Eric W. Biederman
2016-04-11 20:16                                                                 ` H. Peter Anvin
2016-04-11 23:37                                                                   ` Eric W. Biederman
2016-04-12  0:01                                                                     ` Linus Torvalds
2016-04-12  0:10                                                                       ` Eric W. Biederman
2016-04-12  1:06                                                                         ` H. Peter Anvin
2016-04-12  1:18                                                                           ` Linus Torvalds
2016-04-12  1:23                                                                           ` Eric W. Biederman
2016-04-12  1:47                                                                             ` Al Viro
2016-04-12  1:34                                                                         ` Al Viro
2016-04-12  2:16                                                                           ` Eric W. Biederman
2016-04-12 17:44                                                                 ` Andy Lutomirski
2016-04-12 18:12                                                                   ` Linus Torvalds
2016-04-12 19:07                                                                     ` H. Peter Anvin
2016-04-15 15:34                                                                       ` [PATCH 01/16] devpts: Attempting to get it right Eric W. Biederman
2016-04-15 15:35                                                                         ` [PATCH 01/16] devpts: Use the same default mode for both /dev/ptmx and dev/pts/ptmx Eric W. Biederman
2016-04-15 15:35                                                                           ` [PATCH 02/16] devpts: Set the proper fops for /dev/pts/ptmx Eric W. Biederman
2016-04-15 15:35                                                                           ` [PATCH 03/16] vfs: Implement vfs_loopback_mount Eric W. Biederman
2016-04-15 15:35                                                                           ` [PATCH 04/16] devpts: Teach /dev/ptmx to automount the appropriate devpts via path lookup Eric W. Biederman
2016-04-15 22:03                                                                             ` Jann Horn
2016-04-19 18:46                                                                               ` Eric W. Biederman
2016-04-15 15:35                                                                           ` [PATCH 05/16] vfs: Allow unlink, and rename on expirable file mounts Eric W. Biederman
2016-04-15 15:35                                                                           ` [PATCH 06/16] devpts: More obvious check for the system devpts in pty allocation Eric W. Biederman
2016-04-15 15:35                                                                           ` [PATCH 07/16] devpts: Cleanup newinstance parsing Eric W. Biederman
2016-04-15 15:35                                                                           ` [PATCH 08/16] devpts: Stop rolling devpts_remount by hand in devpts_mount Eric W. Biederman
2016-04-15 15:35                                                                           ` [PATCH 09/16] devpts: Fail early (if appropriate) on overmount Eric W. Biederman
2016-04-15 15:35                                                                           ` [PATCH 10/16] devpts: Move parse_mount_options into fill_super Eric W. Biederman
2016-04-15 15:35                                                                           ` [PATCH 11/16] devpts: Make devpts_kill_sb safe if fsi is NULL Eric W. Biederman
2016-04-15 15:35                                                                           ` [PATCH 12/16] devpts: Move the creation of /dev/pts/ptmx into fill_super Eric W. Biederman
2016-04-15 15:35                                                                           ` [PATCH 13/16] devpts: Simplify devpts_mount by using mount_nodev Eric W. Biederman
2016-04-15 15:35                                                                           ` [PATCH 14/16] vfs: Implement mount_super_once Eric W. Biederman
2016-04-15 23:02                                                                             ` Linus Torvalds
2016-04-19 18:22                                                                               ` Eric W. Biederman
2016-04-19 18:47                                                                                 ` H. Peter Anvin
2016-04-19 19:03                                                                                   ` Eric W. Biederman
2016-04-19 19:25                                                                                     ` H. Peter Anvin
2016-04-19 19:26                                                                                       ` H. Peter Anvin
2016-04-20  3:27                                                                                         ` Eric W. Biederman
2016-04-20 11:50                                                                                           ` Austin S. Hemmelgarn
2016-04-20 16:12                                                                                             ` H. Peter Anvin
2016-04-19 18:55                                                                                 ` H. Peter Anvin
2016-04-19 23:29                                                                                 ` Linus Torvalds
2016-04-20  1:24                                                                                   ` Linus Torvalds
2016-04-20  1:37                                                                                     ` H. Peter Anvin
2016-04-15 15:35                                                                           ` [PATCH 15/16] devpts: Always return a distinct instance when mounting Eric W. Biederman
2016-04-15 15:35                                                                           ` [PATCH 16/16] devpts: Kill the DEVPTS_MULTIPLE_INSTANCE config option Eric W. Biederman
2016-04-15 16:49                                                                         ` [PATCH 01/16] devpts: Attempting to get it right Andy Lutomirski
2016-04-15 20:43                                                                           ` Eric W. Biederman
2016-04-15 21:29                                                                             ` H. Peter Anvin
2016-04-19 19:00                                                                               ` Eric W. Biederman
2016-04-16 18:31                                                                         ` Linus Torvalds
2016-04-19 18:44                                                                           ` Does anyone care about a race free ptsname? Eric W. Biederman
2016-04-19 19:16                                                                             ` H. Peter Anvin
2016-04-19 20:32                                                                               ` Eric W. Biederman
2016-04-19 20:55                                                                                 ` H. Peter Anvin
2016-04-19 20:42                                                                             ` Serge E. Hallyn
2016-04-19 23:23                                                                             ` Linus Torvalds
2016-04-19 23:39                                                                               ` H. Peter Anvin
2016-04-20  0:18                                                                                 ` Linus Torvalds
2016-04-20  1:48                                                                                 ` Serge E. Hallyn
2016-04-19 22:06                                                                           ` [PATCH 01/16] devpts: Attempting to get it right Eric W. Biederman
2016-04-19 23:35                                                                             ` Linus Torvalds
2016-04-20  0:24                                                                               ` Peter Hurley
2016-04-20  0:49                                                                                 ` Peter Hurley
2016-04-20  3:04                                                                               ` [PATCH] devpts: Make each mount of devpts an independent filesystem Eric W. Biederman
2016-04-20  3:25                                                                                 ` Al Viro
2016-04-20  3:43                                                                                   ` Eric W. Biederman
2016-04-20  4:11                                                                                     ` Al Viro
2016-04-20  4:21                                                                                       ` Eric W. Biederman
2016-04-20  4:36                                                                                 ` Konstantin Khlebnikov
2016-04-20  4:49                                                                                   ` Linus Torvalds
2016-04-20 14:55                                                                                     ` Eric W. Biederman
2016-04-20 15:34                                                                                       ` Konstantin Khlebnikov
2016-04-20 15:50                                                                                         ` Eric W. Biederman
2016-04-20 17:00                                                                                         ` [PATCH v2] " Eric W. Biederman
     [not found]                                                                                           ` <874mabt3df.fsf_-_@x220.int.ebiederm.org>
2016-05-06 19:04                                                                                             ` [PATCH 1/1] " Eric W. Biederman
2016-05-06 19:35                                                                                             ` [PATCH 0/1] devpts: Removing the need for pt_chown Greg KH
2016-05-06 19:45                                                                                               ` Peter Hurley
2016-05-06 19:54                                                                                                 ` Greg KH
2016-06-02 15:29                                                                                                   ` [PATCH tty-next] devpts: Make each mount of devpts an independent filesystem Eric W. Biederman
2016-06-02 18:57                                                                                                     ` Linus Torvalds
2016-06-02 20:22                                                                                                       ` Eric W. Biederman
2016-06-02 20:36                                                                                                         ` H. Peter Anvin
2016-06-02 21:23                                                                                                           ` Eric W. Biederman
2016-06-02 21:44                                                                                                             ` Linus Torvalds
2016-04-11 23:49                                                               ` [PATCH 01/13] devpts: Teach /dev/ptmx to find the associated devpts via path lookup Eric W. Biederman
2016-04-12  0:08                                                                 ` Linus Torvalds
2016-04-12  0:22                                                                   ` Eric W. Biederman
2016-04-12  0:50                                                                     ` Linus Torvalds
2016-04-11 20:05                                                       ` Eric W. Biederman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1459819769-30387-1-git-send-email-ebiederm@xmission.com \
    --to=ebiederm@xmission.com \
    --cc=aurelien@aurel32.net \
    --cc=fw@deneb.enyo.de \
    --cc=greg@kroah.com \
    --cc=hpa@zytor.com \
    --cc=jann@thejh.net \
    --cc=jslaby@suse.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@amacapital.net \
    --cc=peter@hurleysoftware.com \
    --cc=security@debian.org \
    --cc=security@kernel.org \
    --cc=security@ubuntu.com \
    --cc=serge.hallyn@ubuntu.com \
    --cc=torvalds@linux-foundation.org \
    --cc=viro@zeniv.linux.org.uk \
    --cc=w@1wt.eu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.