Lines Matching refs:link
512 struct path link; member
611 path_put(&nd->stack[i].link); in terminate_walk()
646 if (unlikely(!legitimize_path(nd, &last->link, last->seq))) { in legitimize_links()
971 path_put(&last->link); in put_link()
1021 audit_inode(nd->name, nd->stack[0].link.dentry, 0); in may_follow_link()
1073 static int may_linkat(struct path *link) in may_linkat() argument
1075 struct inode *inode = link->dentry->d_inode; in may_linkat()
1138 struct dentry *dentry = last->link.dentry; in get_link()
1144 touch_atime(&last->link); in get_link()
1146 } else if (atime_needs_update(&last->link, inode)) { in get_link()
1149 touch_atime(&last->link); in get_link()
1805 static int pick_link(struct nameidata *nd, struct path *link, in pick_link() argument
1811 path_to_nameidata(link, nd); in pick_link()
1815 if (link->mnt == nd->path.mnt) in pick_link()
1816 mntget(link->mnt); in pick_link()
1821 if (unlikely(!legitimize_path(nd, link, seq))) { in pick_link()
1832 path_put(link); in pick_link()
1838 last->link = *link; in pick_link()
4366 if (!dir->i_op->link) in vfs_link2()
4384 error = dir->i_op->link(old_dentry, dir, new_dentry); in vfs_link2()
4485 SYSCALL_DEFINE2(link, const char __user *, oldname, const char __user *, newname) in SYSCALL_DEFINE2() argument
4848 int readlink_copy(char __user *buffer, int buflen, const char *link) in readlink_copy() argument
4850 int len = PTR_ERR(link); in readlink_copy()
4851 if (IS_ERR(link)) in readlink_copy()
4854 len = strlen(link); in readlink_copy()
4857 if (copy_to_user(buffer, link, len)) in readlink_copy()
4877 const char *link; in vfs_readlink() local
4892 link = READ_ONCE(inode->i_link); in vfs_readlink()
4893 if (!link) { in vfs_readlink()
4894 link = inode->i_op->get_link(dentry, inode, &done); in vfs_readlink()
4895 if (IS_ERR(link)) in vfs_readlink()
4896 return PTR_ERR(link); in vfs_readlink()
4898 res = readlink_copy(buffer, buflen, link); in vfs_readlink()