From 4542576b79a680062dc344a8a6e79d34b4c91bf1 Mon Sep 17 00:00:00 2001 From: Al Viro Date: Tue, 3 Mar 2020 11:25:31 -0500 Subject: reserve_stack(): switch to __nd_alloc_stack() expand the call of nd_alloc_stack() into it (and don't recheck the depth on the second call) Signed-off-by: Al Viro --- fs/namei.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) (limited to 'fs/namei.c') diff --git a/fs/namei.c b/fs/namei.c index 6025406e01e5..0539a26dd9b4 100644 --- a/fs/namei.c +++ b/fs/namei.c @@ -566,15 +566,6 @@ static bool path_connected(struct vfsmount *mnt, struct dentry *dentry) return is_subdir(dentry, mnt->mnt_root); } -static inline int nd_alloc_stack(struct nameidata *nd) -{ - if (likely(nd->depth != EMBEDDED_LEVELS)) - return 0; - if (likely(nd->stack != nd->internal)) - return 0; - return __nd_alloc_stack(nd); -} - static void drop_links(struct nameidata *nd) { int i = nd->depth; @@ -1586,7 +1577,13 @@ static int reserve_stack(struct nameidata *nd, struct path *link, unsigned seq) if (unlikely(nd->total_link_count++ >= MAXSYMLINKS)) return -ELOOP; - error = nd_alloc_stack(nd); + + if (likely(nd->depth != EMBEDDED_LEVELS)) + return 0; + if (likely(nd->stack != nd->internal)) + return 0; + + error = __nd_alloc_stack(nd); if (likely(!error)) return 0; if (error == -ECHILD) { @@ -1597,7 +1594,7 @@ static int reserve_stack(struct nameidata *nd, struct path *link, unsigned seq) if (unlikely(!grabbed_link)) error = -ECHILD; if (!error) - error = nd_alloc_stack(nd); + error = __nd_alloc_stack(nd); } return error; } -- cgit