linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Al Viro <viro@ZenIV.linux.org.uk>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Neil Brown <neilb@suse.de>, Christoph Hellwig <hch@infradead.org>,
	linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org
Subject: [PATCH 14/21] namei: saner calling conventions for filename_parentat()
Date: Wed, 13 May 2015 23:26:08 +0100	[thread overview]
Message-ID: <1431555975-25997-14-git-send-email-viro@ZenIV.linux.org.uk> (raw)
In-Reply-To: <20150513222533.GA24192@ZenIV.linux.org.uk>

From: Al Viro <viro@zeniv.linux.org.uk>

a) make it reject ERR_PTR() for name
b) make it putname(name) on all other failure exits
c) make it return name on success

again, simplifies the callers

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
---
 fs/namei.c | 60 ++++++++++++++++++++++--------------------------------------
 1 file changed, 22 insertions(+), 38 deletions(-)

diff --git a/fs/namei.c b/fs/namei.c
index 4588e82..bd45300 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -2164,13 +2164,16 @@ static int path_parentat(int dfd, const struct filename *name,
 	return err;
 }
 
-static int filename_parentat(int dfd, struct filename *name,
+static struct filename *filename_parentat(int dfd, struct filename *name,
 				unsigned int flags, struct path *parent,
 				struct qstr *last, int *type)
 {
 	int retval;
-	struct nameidata nd, *saved_nd = set_nameidata(&nd);
+	struct nameidata nd, *saved_nd;
 
+	if (IS_ERR(name))
+		return name;
+	saved_nd = set_nameidata(&nd);
 	retval = path_parentat(dfd, name, flags | LOOKUP_RCU, &nd, parent);
 	if (unlikely(retval == -ECHILD))
 		retval = path_parentat(dfd, name, flags, &nd, parent);
@@ -2181,32 +2184,30 @@ static int filename_parentat(int dfd, struct filename *name,
 		*last = nd.last;
 		*type = nd.last_type;
 		audit_inode(name, parent->dentry, LOOKUP_PARENT);
+	} else {
+		putname(name);
+		name = ERR_PTR(retval);
 	}
 	restore_nameidata(saved_nd);
-	return retval;
+	return name;
 }
 
 /* does lookup, returns the object with parent locked */
 struct dentry *kern_path_locked(const char *name, struct path *path)
 {
-	struct filename *filename = getname_kernel(name);
+	struct filename *filename;
+	struct dentry *d;
 	struct qstr last;
 	int type;
-	struct dentry *d;
-	int err;
 
+	filename = filename_parentat(AT_FDCWD, getname_kernel(name), 0, path,
+				    &last, &type);
 	if (IS_ERR(filename))
 		return ERR_CAST(filename);
-
-	err = filename_parentat(AT_FDCWD, filename, 0, path, &last, &type);
-	if (err) {
-		d = ERR_PTR(err);
-		goto out;
-	}
-	if (type != LAST_NORM) {
+	if (unlikely(type != LAST_NORM)) {
 		path_put(path);
-		d = ERR_PTR(-EINVAL);
-		goto out;
+		putname(filename);
+		return ERR_PTR(-EINVAL);
 	}
 	mutex_lock_nested(&path->dentry->d_inode->i_mutex, I_MUTEX_PARENT);
 	d = __lookup_hash(&last, path->dentry, 0);
@@ -2214,7 +2215,6 @@ struct dentry *kern_path_locked(const char *name, struct path *path)
 		mutex_unlock(&path->dentry->d_inode->i_mutex);
 		path_put(path);
 	}
-out:
 	putname(filename);
 	return d;
 }
@@ -2323,21 +2323,9 @@ user_path_parent(int dfd, const char __user *path,
 		 int *type,
 		 unsigned int flags)
 {
-	struct filename *s = getname(path);
-	int error;
-
 	/* only LOOKUP_REVAL is allowed in extra flags */
-	flags &= LOOKUP_REVAL;
-
-	if (IS_ERR(s))
-		return s;
-
-	error = filename_parentat(dfd, s, flags, parent, last, type);
-	if (error) {
-		putname(s);
-		s = ERR_PTR(error);
-	}
-	return s;
+	return filename_parentat(dfd, getname(path), flags & LOOKUP_REVAL,
+				 parent, last, type);
 }
 
 /**
@@ -3401,25 +3389,21 @@ static struct dentry *filename_create(int dfd, struct filename *name,
 	int error;
 	bool is_dir = (lookup_flags & LOOKUP_DIRECTORY);
 
-	if (IS_ERR(name))
-		return ERR_CAST(name);
 	/*
 	 * Note that only LOOKUP_REVAL and LOOKUP_DIRECTORY matter here. Any
 	 * other flags passed in are ignored!
 	 */
 	lookup_flags &= LOOKUP_REVAL;
 
-	error = filename_parentat(dfd, name, lookup_flags, path, &last, &type);
-	if (error) {
-		putname(name);
-		return ERR_PTR(error);
-	}
+	name = filename_parentat(dfd, name, lookup_flags, path, &last, &type);
+	if (IS_ERR(name))
+		return ERR_CAST(name);
 
 	/*
 	 * Yucky last component or no last component at all?
 	 * (foo/., foo/.., /////)
 	 */
-	if (type != LAST_NORM)
+	if (unlikely(type != LAST_NORM))
 		goto out;
 
 	/* don't fail immediately if it's r/o, at least try to report other errors */
-- 
2.1.4

  parent reply	other threads:[~2015-05-13 22:26 UTC|newest]

Thread overview: 298+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-05  5:22 [RFC][PATCHSET] non-recursive pathname resolution Al Viro
2015-05-05  5:21 ` [PATCH 01/79] 9p: don't bother with 4K allocation for 24-byte local array Al Viro
2015-05-05  5:21 ` [PATCH 02/79] 9p: don't bother with __getname() in ->follow_link() Al Viro
2015-05-05  5:21 ` [PATCH 03/79] ovl: rearrange ovl_follow_link to it doesn't need to call ->put_link Al Viro
2015-05-05  5:21 ` [PATCH 04/79] ext4: split inode_operations for encrypted symlinks off the rest Al Viro
2015-05-05  9:10   ` Jan Kara
2015-05-05 15:01   ` Linus Torvalds
2015-05-05 15:10     ` Al Viro
2015-05-05  5:21 ` [PATCH 05/79] libfs: simple_follow_link() Al Viro
2015-05-05  9:20   ` Jan Kara
2015-05-05  5:21 ` [PATCH 06/79] ext2: use simple_follow_link() Al Viro
2015-05-05  9:17   ` Jan Kara
2015-05-05  5:21 ` [PATCH 07/79] befs: switch to simple_follow_link() Al Viro
2015-05-05  9:21   ` Jan Kara
2015-05-05  5:21 ` [PATCH 08/79] ext3: " Al Viro
2015-05-05  9:19   ` Jan Kara
2015-05-05  5:21 ` [PATCH 09/79] ext4: " Al Viro
2015-05-05  9:22   ` Jan Kara
2015-05-05  5:21 ` [PATCH 10/79] jffs2: " Al Viro
2015-05-05  5:21 ` [PATCH 11/79] shmem: " Al Viro
2015-05-05  9:24   ` Jan Kara
2015-05-05  5:21 ` [PATCH 12/79] debugfs: " Al Viro
2015-05-05  9:25   ` Jan Kara
2015-05-05  5:21 ` [PATCH 13/79] ufs: " Al Viro
2015-05-05  5:21 ` [PATCH 14/79] ubifs: " Al Viro
2015-05-05  5:21 ` [PATCH 15/79] sysv: " Al Viro
2015-05-05  5:21 ` [PATCH 16/79] jfs: " Al Viro
2015-05-05  9:27   ` Jan Kara
2015-05-06 13:39   ` Dave Kleikamp
2015-05-05  5:21 ` [PATCH 17/79] freevxfs: " Al Viro
2015-05-05  5:21 ` [PATCH 18/79] exofs: switch to {simple,page}_symlink_inode_operations Al Viro
2015-05-06  9:59   ` Boaz Harrosh
2015-05-05  5:21 ` [PATCH 19/79] ceph: switch to simple_follow_link() Al Viro
2015-05-05  5:21 ` [PATCH 20/79] logfs: fix a pagecache leak for symlinks Al Viro
2015-05-05  5:21 ` [PATCH 21/79] SECURITY: remove nameidata arg from inode_follow_link Al Viro
2015-05-05  5:21 ` [PATCH 22/79] uninline walk_component() Al Viro
2015-05-05  5:21 ` [PATCH 23/79] namei: take O_NOFOLLOW treatment into do_last() Al Viro
2015-05-05  5:21 ` [PATCH 24/79] do_last: kill symlink_ok Al Viro
2015-05-05  5:21 ` [PATCH 25/79] do_last: regularize the logics around following symlinks Al Viro
2015-05-05  5:22 ` [PATCH 26/79] namei: get rid of lookup_hash() Al Viro
2015-05-05  5:22 ` [PATCH 27/79] name: shift nameidata down into user_path_walk() Al Viro
2015-05-05  5:22 ` [PATCH 28/79] namei: lift nameidata into filename_mountpoint() Al Viro
2015-05-05  5:22 ` [PATCH 29/79] new ->follow_link() and ->put_link() calling conventions Al Viro
2015-05-05  5:22 ` [PATCH 30/79] namei.c: separate the parts of follow_link() that find the link body Al Viro
2015-05-05  5:22 ` [PATCH 31/79] namei: don't bother with ->follow_link() if ->i_link is set Al Viro
2015-05-05  5:22 ` [PATCH 32/79] namei: introduce nameidata->link Al Viro
2015-05-05  5:22 ` [PATCH 33/79] do_last: move path there from caller's stack frame Al Viro
2015-05-05  5:22 ` [PATCH 34/79] namei: expand nested_symlink() in its only caller Al Viro
2015-05-05  5:22 ` [PATCH 35/79] namei: expand the call of follow_link() in link_path_walk() Al Viro
2015-05-05  5:22 ` [PATCH 36/79] namei: move the calls of may_follow_link() into follow_link() Al Viro
2015-05-05  5:22 ` [PATCH 37/79] namei: rename follow_link to trailing_symlink, move it down Al Viro
2015-05-05  5:22 ` [PATCH 38/79] link_path_walk: handle get_link() returning ERR_PTR() immediately Al Viro
2015-05-05  5:22 ` [PATCH 39/79] link_path_walk: don't bother with walk_component() after jumping link Al Viro
2015-05-05  5:22 ` [PATCH 40/79] link_path_walk: turn inner loop into explicit goto Al Viro
2015-05-05 15:09   ` Linus Torvalds
2015-05-05 15:17     ` Al Viro
2015-05-05 15:21       ` Linus Torvalds
2015-05-05  5:22 ` [PATCH 41/79] link_path_walk: massage a bit more Al Viro
2015-05-05  5:22 ` [PATCH 42/79] link_path_walk: get rid of duplication Al Viro
2015-05-05 15:10   ` Linus Torvalds
2015-05-05  5:22 ` [PATCH 43/79] link_path_walk: final preparations to killing recursion Al Viro
2015-05-05  5:22 ` [PATCH 44/79] link_path_walk: kill the recursion Al Viro
2015-05-05  5:22 ` [PATCH 45/79] link_path_walk: split "return from recursive call" path Al Viro
2015-05-05  5:22 ` [PATCH 46/79] link_path_walk: cleanup - turn goto start; into continue; Al Viro
2015-05-05  5:22 ` [PATCH 47/79] namei: move link/cookie pairs into nameidata Al Viro
2015-05-06  2:42   ` NeilBrown
2015-05-06  7:22     ` Al Viro
2015-05-05  5:22 ` [PATCH 48/79] namei: trim redundant arguments of trailing_symlink() Al Viro
2015-05-05  5:22 ` [PATCH 49/79] namei: trim redundant arguments of fs/namei.c:put_link() Al Viro
2015-05-05  5:22 ` [PATCH 50/79] namei: trim the arguments of get_link() Al Viro
2015-05-05  5:22 ` [PATCH 51/79] namei: remove restrictions on nesting depth Al Viro
2015-05-06  2:55   ` NeilBrown
2015-05-06  7:24     ` Al Viro
2015-05-06 16:22       ` Al Viro
2015-05-05  5:22 ` [PATCH 52/79] link_path_walk: nd->depth massage, part 1 Al Viro
2015-05-05  5:22 ` [PATCH 53/79] link_path_walk: nd->depth massage, part 2 Al Viro
2015-05-05  5:22 ` [PATCH 54/79] link_path_walk: nd->depth massage, part 3 Al Viro
2015-05-05  5:22 ` [PATCH 55/79] link_path_walk: nd->depth massage, part 4 Al Viro
2015-05-05  5:22 ` [PATCH 56/79] trailing_symlink: nd->depth massage, part 5 Al Viro
2015-05-05  5:22 ` [PATCH 57/79] get_link: nd->depth massage, part 6 Al Viro
2015-05-05  5:22 ` [PATCH 58/79] trailing_symlink: nd->depth massage, part 7 Al Viro
2015-05-05  5:22 ` [PATCH 59/79] put_link: nd->depth massage, part 8 Al Viro
2015-05-05  5:22 ` [PATCH 60/79] link_path_walk: nd->depth massage, part 9 Al Viro
2015-05-05  5:22 ` [PATCH 61/79] link_path_walk: nd->depth massage, part 10 Al Viro
2015-05-05  5:22 ` [PATCH 62/79] link_path_walk: end of nd->depth massage Al Viro
2015-05-05  5:22 ` [PATCH 63/79] namei: we never need more than MAXSYMLINKS entries in nd->stack Al Viro
2015-05-05  5:22 ` [PATCH 64/79] namei: lift (open-coded) terminate_walk() in follow_dotdot_rcu() into callers Al Viro
2015-05-05  5:22 ` [PATCH 65/79] lift terminate_walk() into callers of walk_component() Al Viro
2015-05-05  5:22 ` [PATCH 66/79] namei: lift (open-coded) terminate_walk() into callers of get_link() Al Viro
2015-05-05  5:22 ` [PATCH 67/79] namei: take put_link() into {lookup,mountpoint,do}_last() Al Viro
2015-05-05  5:22 ` [PATCH 68/79] namei: have terminate_walk() do put_link() on everything left Al Viro
2015-05-05  5:22 ` [PATCH 69/79] link_path_walk: move the OK: inside the loop Al Viro
2015-05-05  5:22 ` [PATCH 70/79] namei: new calling conventions for walk_component() Al Viro
2015-05-05  5:22 ` [PATCH 71/79] namei: make should_follow_link() store the link in nd->link Al Viro
2015-05-05  5:22 ` [PATCH 72/79] namei: move link count check and stack allocation into pick_link() Al Viro
2015-05-05  5:22 ` [PATCH 73/79] lustre: rip the private symlink nesting limit out Al Viro
2015-05-05  5:22 ` [PATCH 74/79] VFS: replace {, total_}link_count in task_struct with pointer to nameidata Al Viro
2015-05-05  5:22 ` [PATCH 75/79] namei: simplify the callers of follow_managed() Al Viro
2015-05-05  5:22 ` [PATCH 76/79] don't pass nameidata to ->follow_link() Al Viro
2015-05-05  5:22 ` [PATCH 77/79] namei: move unlazying on symlinks towards get_link() call sites Al Viro
2015-05-05  5:22 ` [PATCH 78/79] namei: new helper - is_stale() Al Viro
2015-05-05  5:22 ` [PATCH 79/79] namei: stretch RCU mode into get_link() Al Viro
2015-05-05 15:20 ` [RFC][PATCHSET] non-recursive pathname resolution Linus Torvalds
2015-05-05 23:59   ` Al Viro
2015-05-10  5:45     ` Al Viro
2015-05-11 18:06 ` [RFC][PATCHSET v3] non-recursive pathname resolution & RCU symlinks Al Viro
2015-05-11 18:06   ` [PATCH v3 001/110] 9p: don't bother with 4K allocation for 24-byte local array Al Viro
2015-05-11 18:06   ` [PATCH v3 002/110] 9p: don't bother with __getname() in ->follow_link() Al Viro
2015-05-11 18:06   ` [PATCH v3 003/110] ovl: rearrange ovl_follow_link to it doesn't need to call ->put_link Al Viro
2015-05-11 18:06   ` [PATCH v3 004/110] ext4: split inode_operations for encrypted symlinks off the rest Al Viro
2015-05-11 18:20     ` Linus Torvalds
2015-05-11 18:06   ` [PATCH v3 005/110] libfs: simple_follow_link() Al Viro
2015-05-11 18:06   ` [PATCH v3 006/110] ext2: use simple_follow_link() Al Viro
2015-05-11 18:06   ` [PATCH v3 007/110] befs: switch to simple_follow_link() Al Viro
2015-05-11 18:06   ` [PATCH v3 008/110] ext3: " Al Viro
2015-05-11 18:06   ` [PATCH v3 009/110] ext4: " Al Viro
2015-05-11 18:06   ` [PATCH v3 010/110] jffs2: " Al Viro
2015-05-11 18:06   ` [PATCH v3 011/110] shmem: " Al Viro
2015-05-11 18:06   ` [PATCH v3 012/110] debugfs: " Al Viro
2015-05-11 18:06   ` [PATCH v3 013/110] ufs: " Al Viro
2015-05-11 18:06   ` [PATCH v3 014/110] ubifs: " Al Viro
2015-05-11 18:06   ` [PATCH v3 015/110] sysv: " Al Viro
2015-05-11 18:06   ` [PATCH v3 016/110] jfs: " Al Viro
2015-05-11 18:06   ` [PATCH v3 017/110] freevxfs: " Al Viro
2015-05-11 18:06   ` [PATCH v3 018/110] exofs: switch to {simple,page}_symlink_inode_operations Al Viro
2015-05-11 18:06   ` [PATCH v3 019/110] ceph: switch to simple_follow_link() Al Viro
2015-05-11 18:06   ` [PATCH v3 020/110] logfs: fix a pagecache leak for symlinks Al Viro
2015-05-11 18:06   ` [PATCH v3 021/110] SECURITY: remove nameidata arg from inode_follow_link Al Viro
2015-05-11 18:06   ` [PATCH v3 022/110] uninline walk_component() Al Viro
2015-05-11 18:06   ` [PATCH v3 023/110] namei: take O_NOFOLLOW treatment into do_last() Al Viro
2015-05-11 18:06   ` [PATCH v3 024/110] do_last: kill symlink_ok Al Viro
2015-05-11 18:06   ` [PATCH v3 025/110] do_last: regularize the logics around following symlinks Al Viro
2015-05-11 18:06   ` [PATCH v3 026/110] namei: get rid of lookup_hash() Al Viro
2015-05-11 18:06   ` [PATCH v3 027/110] name: shift nameidata down into user_path_walk() Al Viro
2015-05-11 18:06   ` [PATCH v3 028/110] namei: lift nameidata into filename_mountpoint() Al Viro
2015-05-11 18:06   ` [PATCH v3 029/110] new ->follow_link() and ->put_link() calling conventions Al Viro
2015-05-11 18:06   ` [PATCH v3 030/110] namei.c: separate the parts of follow_link() that find the link body Al Viro
2015-05-11 18:06   ` [PATCH v3 031/110] namei: don't bother with ->follow_link() if ->i_link is set Al Viro
2015-05-11 18:06   ` [PATCH v3 032/110] namei: introduce nameidata->link Al Viro
2015-05-11 18:06   ` [PATCH v3 033/110] do_last: move path there from caller's stack frame Al Viro
2015-05-11 18:06   ` [PATCH v3 034/110] namei: expand nested_symlink() in its only caller Al Viro
2015-05-11 18:06   ` [PATCH v3 035/110] namei: expand the call of follow_link() in link_path_walk() Al Viro
2015-05-11 18:06   ` [PATCH v3 036/110] namei: move the calls of may_follow_link() into follow_link() Al Viro
2015-05-11 18:06   ` [PATCH v3 037/110] namei: rename follow_link to trailing_symlink, move it down Al Viro
2015-05-11 18:06   ` [PATCH v3 038/110] link_path_walk: handle get_link() returning ERR_PTR() immediately Al Viro
2015-05-11 18:06   ` [PATCH v3 039/110] link_path_walk: don't bother with walk_component() after jumping link Al Viro
2015-05-11 18:07   ` [PATCH v3 040/110] link_path_walk: turn inner loop into explicit goto Al Viro
2015-05-11 18:07   ` [PATCH v3 041/110] link_path_walk: massage a bit more Al Viro
2015-05-11 18:07   ` [PATCH v3 042/110] link_path_walk: get rid of duplication Al Viro
2015-05-11 18:07   ` [PATCH v3 043/110] link_path_walk: final preparations to killing recursion Al Viro
2015-05-11 18:07   ` [PATCH v3 044/110] link_path_walk: kill the recursion Al Viro
2015-05-11 18:07   ` [PATCH v3 045/110] link_path_walk: split "return from recursive call" path Al Viro
2015-05-11 18:07   ` [PATCH v3 046/110] link_path_walk: cleanup - turn goto start; into continue; Al Viro
2015-05-11 18:07   ` [PATCH v3 047/110] namei: move link/cookie pairs into nameidata Al Viro
2015-05-11 18:07   ` [PATCH v3 048/110] namei: trim redundant arguments of trailing_symlink() Al Viro
2015-05-11 18:07   ` [PATCH v3 049/110] namei: trim redundant arguments of fs/namei.c:put_link() Al Viro
2015-05-11 18:07   ` [PATCH v3 050/110] namei: trim the arguments of get_link() Al Viro
2015-05-11 18:07   ` [PATCH v3 051/110] namei: remove restrictions on nesting depth Al Viro
2015-05-11 18:07   ` [PATCH v3 052/110] link_path_walk: nd->depth massage, part 1 Al Viro
2015-05-11 18:07   ` [PATCH v3 053/110] link_path_walk: nd->depth massage, part 2 Al Viro
2015-05-11 18:07   ` [PATCH v3 054/110] link_path_walk: nd->depth massage, part 3 Al Viro
2015-05-11 18:07   ` [PATCH v3 055/110] link_path_walk: nd->depth massage, part 4 Al Viro
2015-05-11 18:07   ` [PATCH v3 056/110] trailing_symlink: nd->depth massage, part 5 Al Viro
2015-05-11 18:07   ` [PATCH v3 057/110] get_link: nd->depth massage, part 6 Al Viro
2015-05-11 18:07   ` [PATCH v3 058/110] trailing_symlink: nd->depth massage, part 7 Al Viro
2015-05-11 18:07   ` [PATCH v3 059/110] put_link: nd->depth massage, part 8 Al Viro
2015-05-11 18:07   ` [PATCH v3 060/110] link_path_walk: nd->depth massage, part 9 Al Viro
2015-05-11 18:07   ` [PATCH v3 061/110] link_path_walk: nd->depth massage, part 10 Al Viro
2015-05-11 18:07   ` [PATCH v3 062/110] link_path_walk: end of nd->depth massage Al Viro
2015-05-11 18:07   ` [PATCH v3 063/110] namei: we never need more than MAXSYMLINKS entries in nd->stack Al Viro
2015-05-11 18:07   ` [PATCH v3 064/110] namei: lift (open-coded) terminate_walk() in follow_dotdot_rcu() into callers Al Viro
2015-05-11 18:07   ` [PATCH v3 065/110] lift terminate_walk() into callers of walk_component() Al Viro
2015-05-11 18:07   ` [PATCH v3 066/110] namei: lift (open-coded) terminate_walk() into callers of get_link() Al Viro
2015-05-11 18:07   ` [PATCH v3 067/110] namei: take put_link() into {lookup,mountpoint,do}_last() Al Viro
2015-05-11 18:07   ` [PATCH v3 068/110] namei: have terminate_walk() do put_link() on everything left Al Viro
2015-05-11 18:07   ` [PATCH v3 069/110] link_path_walk: move the OK: inside the loop Al Viro
2015-05-11 18:07   ` [PATCH v3 070/110] namei: new calling conventions for walk_component() Al Viro
2015-05-11 18:07   ` [PATCH v3 071/110] namei: make should_follow_link() store the link in nd->link Al Viro
2015-05-11 18:07   ` [PATCH v3 072/110] namei: move link count check and stack allocation into pick_link() Al Viro
2015-05-11 18:07   ` [PATCH v3 073/110] lustre: rip the private symlink nesting limit out Al Viro
2015-05-11 18:07   ` [PATCH v3 074/110] VFS: replace {, total_}link_count in task_struct with pointer to nameidata Al Viro
2015-05-14 23:21     ` Al Viro
2015-05-11 18:07   ` [PATCH v3 075/110] namei: simplify the callers of follow_managed() Al Viro
2015-05-11 18:07   ` [PATCH v3 076/110] don't pass nameidata to ->follow_link() Al Viro
2015-05-11 18:07   ` [PATCH v3 077/110] namei: simplify failure exits in get_link() Al Viro
2015-05-11 18:07   ` [PATCH v3 078/110] namei: simpler treatment of symlinks with nothing other that / in the body Al Viro
2015-05-11 18:07   ` [PATCH v3 079/110] namei: take the treatment of absolute symlinks to get_link() Al Viro
2015-05-11 18:07   ` [PATCH v3 080/110] namei: fold put_link() into the failure case of complete_walk() Al Viro
2015-05-11 18:07   ` [PATCH v3 081/110] namei: move bumping the refcount of link->mnt into pick_link() Al Viro
2015-05-11 18:07   ` [PATCH v3 082/110] may_follow_link(): trim arguments Al Viro
2015-05-11 18:07   ` [PATCH v3 083/110] namei: kill nd->link Al Viro
2015-05-11 18:07   ` [PATCH v3 084/110] namei: take increment of nd->depth into pick_link() Al Viro
2015-05-11 18:07   ` [PATCH v3 085/110] namei: may_follow_link() - lift terminate_walk() on failures into caller Al Viro
2015-05-11 18:07   ` [PATCH v3 086/110] namei: split off filename_lookupat() with LOOKUP_PARENT Al Viro
2015-05-11 18:07   ` [PATCH v3 087/110] namei: get rid of nameidata->base Al Viro
2015-05-11 18:07   ` [PATCH v3 088/110] namei: path_init() calling conventions change Al Viro
2015-05-11 18:07   ` [PATCH v3 089/110] namei: lift link_path_walk() call out of trailing_symlink() Al Viro
2015-05-11 18:07   ` [PATCH v3 090/110] namei: lift terminate_walk() all the way up Al Viro
2015-05-11 18:07   ` [PATCH v3 091/110] link_path_walk: use explicit returns for failure exits Al Viro
2015-05-11 18:07   ` [PATCH v3 092/110] namei: explicitly pass seq number to unlazy_walk() when dentry != NULL Al Viro
2015-05-11 18:07   ` [PATCH v3 093/110] namei: don't mangle nd->seq in lookup_fast() Al Viro
2015-05-11 18:07   ` [PATCH v3 094/110] namei: store inode in nd->stack[] Al Viro
2015-05-11 18:07   ` [PATCH v3 095/110] VFS: Handle lower layer dentry/inode in pathwalk Al Viro
2015-05-11 18:07   ` [PATCH v3 096/110] namei: pick_link() callers already have inode Al Viro
2015-05-11 18:07   ` [PATCH v3 097/110] security/selinux: pass 'flags' arg to avc_audit() and avc_has_perm_flags() Al Viro
2015-05-11 18:07   ` [PATCH v3 098/110] security: make inode_follow_link RCU-walk aware Al Viro
2015-05-11 18:07   ` [PATCH v3 099/110] switch ->put_link() from dentry to inode Al Viro
2015-05-11 18:08   ` [PATCH v3 100/110] new helper: free_page_put_link() Al Viro
2015-05-11 18:08   ` [PATCH v3 101/110] namei: make put_link() RCU-safe Al Viro
2015-05-11 18:08   ` [PATCH v3 102/110] namei: make may_follow_link() safe in RCU mode Al Viro
2015-05-11 18:08   ` [PATCH v3 103/110] new helper: __legitimize_mnt() Al Viro
2015-05-11 18:08   ` [PATCH v3 104/110] namei: store seq numbers in nd->stack[] Al Viro
2015-05-11 18:08   ` [PATCH v3 105/110] namei: make unlazy_walk and terminate_walk handle nd->stack, add unlazy_link Al Viro
2015-05-11 23:43     ` Al Viro
2015-05-12  4:10       ` Al Viro
2015-05-15  5:07         ` Al Viro
2015-05-11 18:08   ` [PATCH v3 106/110] namei: don't unlazy until get_link() Al Viro
2015-05-11 18:08   ` [PATCH v3 107/110] VFS/namei: make the use of touch_atime() in get_link() RCU-safe Al Viro
2015-05-11 18:08   ` [PATCH v3 108/110] enable passing fast relative symlinks without dropping out of RCU mode Al Viro
2015-05-11 18:08   ` [PATCH v3 109/110] namei: handle absolute " Al Viro
2015-05-15  5:11     ` Al Viro
2015-05-11 18:08   ` [PATCH v3 110/110] update Documentation/filesystems/ regarding the follow_link/put_link changes Al Viro
2015-05-13 22:25   ` [RFC][PATCHSET v3] non-recursive pathname resolution & RCU symlinks Al Viro
2015-05-13 22:25     ` [PATCH 01/21] namei: unlazy_walk() doesn't need to mess with current->fs anymore Al Viro
2015-05-13 22:25     ` [PATCH 02/21] lustre: kill unused macro (LOOKUP_CONTINUE) Al Viro
2015-05-13 22:25     ` [PATCH 03/21] lustre: kill unused helper Al Viro
2015-05-13 22:25     ` [PATCH 04/21] get rid of assorted nameidata-related debris Al Viro
2015-05-13 22:25     ` [PATCH 05/21] Documentation: remove outdated information from automount-support.txt Al Viro
2015-05-13 22:26     ` [PATCH 06/21] namei: be careful with mountpoint crossings in follow_dotdot_rcu() Al Viro
2015-05-13 22:26     ` [PATCH 07/21] namei: uninline set_root{,_rcu}() Al Viro
2015-05-13 22:26     ` [PATCH 08/21] namei: pass the struct path to store the result down into path_lookupat() Al Viro
2015-05-13 22:26     ` [PATCH 09/21] namei: move putname() call into filename_lookup() Al Viro
2015-05-13 22:26     ` [PATCH 10/21] namei: shift nameidata inside filename_lookup() Al Viro
2015-05-13 22:26     ` [PATCH 11/21] namei: make filename_lookup() reject ERR_PTR() passed as name Al Viro
2015-05-13 22:26     ` [PATCH 12/21] namei: shift nameidata down into filename_parentat() Al Viro
2015-05-13 22:26     ` [PATCH 13/21] namei: saner calling conventions for filename_create() Al Viro
2015-05-13 22:26     ` Al Viro [this message]
2015-05-13 22:26     ` [PATCH 15/21] namei: fold path_cleanup() into terminate_walk() Al Viro
2015-05-13 22:26     ` [PATCH 16/21] namei: stash dfd and name into nameidata Al Viro
2015-05-13 22:26     ` [PATCH 17/21] namei: trim do_last() arguments Al Viro
2015-05-13 22:26     ` [PATCH 18/21] inline user_path_parent() Al Viro
2015-05-13 22:26     ` [PATCH 19/21] inline user_path_create() Al Viro
2015-05-13 22:26     ` [PATCH 20/21] namei: move saved_nd pointer into struct nameidata Al Viro
2015-05-13 22:26     ` [PATCH 21/21] turn user_{path_at,path,lpath,path_dir}() into static inlines Al Viro
2015-05-14  1:39     ` [RFC][PATCHSET v3] non-recursive pathname resolution & RCU symlinks Linus Torvalds
2015-05-14  3:30       ` Al Viro
2015-05-14  3:52         ` Linus Torvalds
2015-05-14 11:23           ` Dave Chinner
2015-05-14 12:46             ` Jan Kara
2015-05-14 15:51             ` Linus Torvalds
2015-05-14 17:02               ` Linus Torvalds
2015-05-15 23:38               ` Dave Chinner
2015-05-16  0:10                 ` Al Viro
2015-05-16  0:20                   ` Al Viro
2015-05-16  1:23                 ` Linus Torvalds
2015-05-15 21:15             ` Andreas Dilger
2015-05-15 23:30               ` NeilBrown
2015-05-15 23:49                 ` Al Viro
2015-05-16  0:45                 ` Linus Torvalds
2015-05-16  1:25                   ` NeilBrown
2015-05-16  1:47                     ` Linus Torvalds
2015-05-16  1:55                       ` Al Viro
2015-05-16  2:23                         ` Linus Torvalds
2015-05-16  3:16                           ` Al Viro
     [not found]                             ` <CA+55aFzOcE7e=sOckb56KTs+WGutnL2_uum=pLD6Y+73t=EwOQ@mail.gmail.com>
2015-05-16  4:31                               ` Al Viro
2015-05-16 19:36                                 ` Linus Torvalds
2015-05-16  1:47                     ` Al Viro
2015-05-16  4:45                       ` NeilBrown
2015-05-16  5:46                         ` Al Viro
2015-05-16 14:18                           ` Al Viro
2015-05-17  3:12                             ` NeilBrown
2015-05-17  3:48                               ` Linus Torvalds
2015-05-17  4:04                                 ` Linus Torvalds
2015-05-17  4:47                                   ` NeilBrown
2015-05-17 10:55                                   ` Al Viro
2015-05-17 16:43                                     ` Linus Torvalds
2015-05-17 16:56                                       ` Linus Torvalds
2015-05-17 23:16                                       ` NeilBrown
2015-05-18  2:56                                         ` Linus Torvalds
2015-05-18  3:42                                           ` Al Viro
2015-05-18  4:20                                             ` Linus Torvalds
2015-05-19  8:33                                           ` NeilBrown
2015-05-17 23:39                                     ` NeilBrown
2015-05-18  0:10                                       ` Al Viro
2015-05-17  3:03                           ` NeilBrown
2015-05-16  1:38                   ` Al Viro
2015-05-15 23:39               ` Dave Chinner
2015-05-14 22:09           ` Jeremy Allison
2015-05-14 23:24             ` Linus Torvalds
2015-05-14 23:36               ` Al Viro
2015-05-15  0:25                 ` Linus Torvalds
2015-05-15  1:26                   ` Al Viro
2015-05-15  2:18                     ` Linus Torvalds
2015-05-15  2:51                       ` Al Viro
2015-05-15 18:30                         ` Linus Torvalds
2015-05-14 23:57               ` Jeremy Allison
2015-05-15 23:43                 ` Dave Chinner
2015-05-14 16:32         ` 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=1431555975-25997-14-git-send-email-viro@ZenIV.linux.org.uk \
    --to=viro@zeniv.linux.org.uk \
    --cc=hch@infradead.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=neilb@suse.de \
    --cc=torvalds@linux-foundation.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).