Skip to content

Commit

Permalink
pull security_inode_follow_link() into __do_follow_link()
Browse files Browse the repository at this point in the history
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
  • Loading branch information
Al Viro committed Mar 14, 2011
1 parent 086e183 commit 36f3b4f
Showing 1 changed file with 7 additions and 6 deletions.
13 changes: 7 additions & 6 deletions fs/namei.c
Original file line number Diff line number Diff line change
Expand Up @@ -754,6 +754,13 @@ __do_follow_link(const struct path *link, struct nameidata *nd, void **p)
if (link->mnt == nd->path.mnt)
mntget(link->mnt);

error = security_inode_follow_link(link->dentry, nd);
if (error) {
*p = ERR_PTR(error); /* no ->put_link(), please */
path_put(&nd->path);
return error;
}

nd->last_type = LAST_BIND;
*p = dentry->d_inode->i_op->follow_link(dentry, nd);
error = PTR_ERR(*p);
Expand Down Expand Up @@ -791,9 +798,6 @@ static inline int do_follow_link(struct inode *inode, struct path *path, struct
goto loop;
BUG_ON(nd->depth >= MAX_NESTED_LINKS);
cond_resched();
err = security_inode_follow_link(path->dentry, nd);
if (err)
goto loop;
current->link_count++;
current->total_link_count++;
nd->depth++;
Expand Down Expand Up @@ -2420,9 +2424,6 @@ struct file *do_filp_open(int dfd, const char *pathname,
* just set LAST_BIND.
*/
nd.flags |= LOOKUP_PARENT;
error = security_inode_follow_link(link.dentry, &nd);
if (error)
goto exit_dput;
error = __do_follow_link(&link, &nd, &cookie);
if (unlikely(error)) {
if (!IS_ERR(cookie) && linki->i_op->put_link)
Expand Down

0 comments on commit 36f3b4f

Please sign in to comment.