Lines Matching refs:path
475 void path_get(const struct path *path) in path_get() argument
477 mntget(path->mnt); in path_get()
478 dget(path->dentry); in path_get()
488 void path_put(const struct path *path) in path_put() argument
490 dput(path->dentry); in path_put()
491 mntput(path->mnt); in path_put()
497 struct path path; member
499 struct path root;
507 struct path link;
570 static bool path_connected(const struct path *path) in path_connected() argument
572 struct vfsmount *mnt = path->mnt; in path_connected()
578 return is_subdir(path->dentry, mnt->mnt_root); in path_connected()
608 path_put(&nd->path); in terminate_walk()
626 struct path *path, unsigned seq) in legitimize_path() argument
628 int res = __legitimize_mnt(path->mnt, nd->m_seq); in legitimize_path()
631 path->mnt = NULL; in legitimize_path()
632 path->dentry = NULL; in legitimize_path()
635 if (unlikely(!lockref_get_not_dead(&path->dentry->d_lockref))) { in legitimize_path()
636 path->dentry = NULL; in legitimize_path()
639 return !read_seqcount_retry(&path->dentry->d_seq, seq); in legitimize_path()
682 struct dentry *parent = nd->path.dentry; in unlazy_walk()
689 if (unlikely(!legitimize_mnt(nd->path.mnt, nd->m_seq))) in unlazy_walk()
736 nd->path.mnt = NULL; in unlazy_walk()
738 nd->path.dentry = NULL; in unlazy_walk()
747 static int unlazy_link(struct nameidata *nd, struct path *link, unsigned seq) in unlazy_link()
753 nd->path.mnt = NULL; in unlazy_link()
754 nd->path.dentry = NULL; in unlazy_link()
782 struct dentry *dentry = nd->path.dentry; in complete_walk()
825 static void path_put_conditional(struct path *path, struct nameidata *nd) in path_put_conditional() argument
827 dput(path->dentry); in path_put_conditional()
828 if (path->mnt != nd->path.mnt) in path_put_conditional()
829 mntput(path->mnt); in path_put_conditional()
832 static inline void path_to_nameidata(const struct path *path, in path_to_nameidata() argument
836 dput(nd->path.dentry); in path_to_nameidata()
837 if (nd->path.mnt != path->mnt) in path_to_nameidata()
838 mntput(nd->path.mnt); in path_to_nameidata()
840 nd->path.mnt = path->mnt; in path_to_nameidata()
841 nd->path.dentry = path->dentry; in path_to_nameidata()
848 void nd_jump_link(struct path *path) in nd_jump_link() argument
851 path_put(&nd->path); in nd_jump_link()
853 nd->path = *path; in nd_jump_link()
854 nd->inode = nd->path.dentry->d_inode; in nd_jump_link()
962 static int may_linkat(struct path *link) in may_linkat()
1022 nd->path = nd->root; in get_link()
1023 d = nd->path.dentry; in get_link()
1031 path_put(&nd->path); in get_link()
1032 nd->path = nd->root; in get_link()
1034 nd->inode = nd->path.dentry->d_inode; in get_link()
1055 int follow_up(struct path *path) in follow_up() argument
1057 struct mount *mnt = real_mount(path->mnt); in follow_up()
1070 dput(path->dentry); in follow_up()
1071 path->dentry = mountpoint; in follow_up()
1072 mntput(path->mnt); in follow_up()
1073 path->mnt = &parent->mnt; in follow_up()
1083 static int follow_automount(struct path *path, struct nameidata *nd, in follow_automount() argument
1089 if (!path->dentry->d_op || !path->dentry->d_op->d_automount) in follow_automount()
1105 path->dentry->d_inode) in follow_automount()
1112 mnt = path->dentry->d_op->d_automount(path); in follow_automount()
1133 mntget(path->mnt); in follow_automount()
1136 err = finish_automount(mnt, path); in follow_automount()
1143 path_put(path); in follow_automount()
1144 path->mnt = mnt; in follow_automount()
1145 path->dentry = dget(mnt->mnt_root); in follow_automount()
1163 static int follow_managed(struct path *path, struct nameidata *nd) in follow_managed() argument
1165 struct vfsmount *mnt = path->mnt; /* held by caller, must be left alone */ in follow_managed()
1173 while (managed = ACCESS_ONCE(path->dentry->d_flags), in follow_managed()
1179 BUG_ON(!path->dentry->d_op); in follow_managed()
1180 BUG_ON(!path->dentry->d_op->d_manage); in follow_managed()
1181 ret = path->dentry->d_op->d_manage(path->dentry, false); in follow_managed()
1188 struct vfsmount *mounted = lookup_mnt(path); in follow_managed()
1190 dput(path->dentry); in follow_managed()
1192 mntput(path->mnt); in follow_managed()
1193 path->mnt = mounted; in follow_managed()
1194 path->dentry = dget(mounted->mnt_root); in follow_managed()
1207 ret = follow_automount(path, nd, &need_mntput); in follow_managed()
1217 if (need_mntput && path->mnt == mnt) in follow_managed()
1218 mntput(path->mnt); in follow_managed()
1224 path_put_conditional(path, nd); in follow_managed()
1228 int follow_down_one(struct path *path) in follow_down_one() argument
1232 mounted = lookup_mnt(path); in follow_down_one()
1234 dput(path->dentry); in follow_down_one()
1235 mntput(path->mnt); in follow_down_one()
1236 path->mnt = mounted; in follow_down_one()
1237 path->dentry = dget(mounted->mnt_root); in follow_down_one()
1254 static bool __follow_mount_rcu(struct nameidata *nd, struct path *path, in __follow_mount_rcu() argument
1263 switch (managed_dentry_rcu(path->dentry)) { in __follow_mount_rcu()
1273 if (!d_mountpoint(path->dentry)) in __follow_mount_rcu()
1274 return !(path->dentry->d_flags & DCACHE_NEED_AUTOMOUNT); in __follow_mount_rcu()
1276 mounted = __lookup_mnt(path->mnt, path->dentry); in __follow_mount_rcu()
1279 path->mnt = &mounted->mnt; in __follow_mount_rcu()
1280 path->dentry = mounted->mnt.mnt_root; in __follow_mount_rcu()
1282 *seqp = read_seqcount_begin(&path->dentry->d_seq); in __follow_mount_rcu()
1288 *inode = path->dentry->d_inode; in __follow_mount_rcu()
1291 !(path->dentry->d_flags & DCACHE_NEED_AUTOMOUNT); in __follow_mount_rcu()
1301 if (path_equal(&nd->path, &nd->root)) in follow_dotdot_rcu()
1303 if (nd->path.dentry != nd->path.mnt->mnt_root) { in follow_dotdot_rcu()
1304 struct dentry *old = nd->path.dentry; in follow_dotdot_rcu()
1312 nd->path.dentry = parent; in follow_dotdot_rcu()
1314 if (unlikely(!path_connected(&nd->path))) in follow_dotdot_rcu()
1318 struct mount *mnt = real_mount(nd->path.mnt); in follow_dotdot_rcu()
1325 if (&mparent->mnt == nd->path.mnt) in follow_dotdot_rcu()
1328 nd->path.dentry = mountpoint; in follow_dotdot_rcu()
1329 nd->path.mnt = &mparent->mnt; in follow_dotdot_rcu()
1334 while (unlikely(d_mountpoint(nd->path.dentry))) { in follow_dotdot_rcu()
1336 mounted = __lookup_mnt(nd->path.mnt, nd->path.dentry); in follow_dotdot_rcu()
1341 nd->path.mnt = &mounted->mnt; in follow_dotdot_rcu()
1342 nd->path.dentry = mounted->mnt.mnt_root; in follow_dotdot_rcu()
1343 inode = nd->path.dentry->d_inode; in follow_dotdot_rcu()
1344 nd->seq = read_seqcount_begin(&nd->path.dentry->d_seq); in follow_dotdot_rcu()
1355 int follow_down(struct path *path) in follow_down() argument
1360 while (managed = ACCESS_ONCE(path->dentry->d_flags), in follow_down()
1373 BUG_ON(!path->dentry->d_op); in follow_down()
1374 BUG_ON(!path->dentry->d_op->d_manage); in follow_down()
1375 ret = path->dentry->d_op->d_manage( in follow_down()
1376 path->dentry, false); in follow_down()
1383 struct vfsmount *mounted = lookup_mnt(path); in follow_down()
1386 dput(path->dentry); in follow_down()
1387 mntput(path->mnt); in follow_down()
1388 path->mnt = mounted; in follow_down()
1389 path->dentry = dget(mounted->mnt_root); in follow_down()
1403 static void follow_mount(struct path *path) in follow_mount() argument
1405 while (d_mountpoint(path->dentry)) { in follow_mount()
1406 struct vfsmount *mounted = lookup_mnt(path); in follow_mount()
1409 dput(path->dentry); in follow_mount()
1410 mntput(path->mnt); in follow_mount()
1411 path->mnt = mounted; in follow_mount()
1412 path->dentry = dget(mounted->mnt_root); in follow_mount()
1422 struct dentry *old = nd->path.dentry; in follow_dotdot()
1424 if (nd->path.dentry == nd->root.dentry && in follow_dotdot()
1425 nd->path.mnt == nd->root.mnt) { in follow_dotdot()
1428 if (nd->path.dentry != nd->path.mnt->mnt_root) { in follow_dotdot()
1430 nd->path.dentry = dget_parent(nd->path.dentry); in follow_dotdot()
1432 if (unlikely(!path_connected(&nd->path))) in follow_dotdot()
1436 if (!follow_up(&nd->path)) in follow_dotdot()
1439 follow_mount(&nd->path); in follow_dotdot()
1440 nd->inode = nd->path.dentry->d_inode; in follow_dotdot()
1529 struct path *path, struct inode **inode, in lookup_fast() argument
1532 struct vfsmount *mnt = nd->path.mnt; in lookup_fast()
1533 struct dentry *dentry, *parent = nd->path.dentry; in lookup_fast()
1584 path->mnt = mnt; in lookup_fast()
1585 path->dentry = dentry; in lookup_fast()
1586 if (likely(__follow_mount_rcu(nd, path, inode, seqp))) in lookup_fast()
1614 path->mnt = mnt; in lookup_fast()
1615 path->dentry = dentry; in lookup_fast()
1616 err = follow_managed(path, nd); in lookup_fast()
1618 *inode = d_backing_inode(path->dentry); in lookup_fast()
1626 static int lookup_slow(struct nameidata *nd, struct path *path) in lookup_slow() argument
1630 parent = nd->path.dentry; in lookup_slow()
1638 path->mnt = nd->path.mnt; in lookup_slow()
1639 path->dentry = dentry; in lookup_slow()
1640 return follow_managed(path, nd); in lookup_slow()
1666 static int pick_link(struct nameidata *nd, struct path *link, in pick_link()
1676 if (link->mnt == nd->path.mnt) in pick_link()
1706 static inline int should_follow_link(struct nameidata *nd, struct path *link, in should_follow_link()
1726 struct path path; in walk_component() local
1741 err = lookup_fast(nd, &path, &inode, &seq); in walk_component()
1746 err = lookup_slow(nd, &path); in walk_component()
1752 if (d_is_negative(path.dentry)) in walk_component()
1754 inode = d_backing_inode(path.dentry); in walk_component()
1759 err = should_follow_link(nd, &path, flags & WALK_GET, inode, seq); in walk_component()
1762 path_to_nameidata(&path, nd); in walk_component()
1768 path_to_nameidata(&path, nd); in walk_component()
1928 struct dentry *parent = nd->path.dentry; in link_path_walk()
1986 if (unlikely(!d_can_lookup(nd->path.dentry))) { in link_path_walk()
2014 nd->path = nd->root; in path_init()
2018 nd->seq = __read_seqcount_begin(&nd->path.dentry->d_seq); in path_init()
2022 path_get(&nd->path); in path_init()
2039 nd->path = nd->root; in path_init()
2049 nd->path = fs->pwd; in path_init()
2050 nd->seq = __read_seqcount_begin(&nd->path.dentry->d_seq); in path_init()
2053 get_fs_pwd(current->fs, &nd->path); in path_init()
2072 nd->path = f.file->f_path; in path_init()
2075 nd->inode = nd->path.dentry->d_inode; in path_init()
2076 nd->seq = read_seqcount_begin(&nd->path.dentry->d_seq); in path_init()
2078 path_get(&nd->path); in path_init()
2079 nd->inode = nd->path.dentry->d_inode; in path_init()
2085 nd->inode = nd->path.dentry->d_inode; in path_init()
2088 if (likely(!read_seqcount_retry(&nd->path.dentry->d_seq, nd->seq))) in path_init()
2123 static int path_lookupat(struct nameidata *nd, unsigned flags, struct path *path) in path_lookupat() argument
2142 if (!d_can_lookup(nd->path.dentry)) in path_lookupat()
2145 *path = nd->path; in path_lookupat()
2146 nd->path.mnt = NULL; in path_lookupat()
2147 nd->path.dentry = NULL; in path_lookupat()
2154 struct path *path, struct path *root) in filename_lookup() argument
2165 retval = path_lookupat(&nd, flags | LOOKUP_RCU, path); in filename_lookup()
2167 retval = path_lookupat(&nd, flags, path); in filename_lookup()
2169 retval = path_lookupat(&nd, flags | LOOKUP_REVAL, path); in filename_lookup()
2172 audit_inode(name, path->dentry, flags & LOOKUP_PARENT); in filename_lookup()
2180 struct path *parent) in path_parentat()
2190 *parent = nd->path; in path_parentat()
2191 nd->path.mnt = NULL; in path_parentat()
2192 nd->path.dentry = NULL; in path_parentat()
2199 unsigned int flags, struct path *parent, in filename_parentat()
2226 struct dentry *kern_path_locked(const char *name, struct path *path) in kern_path_locked() argument
2233 filename = filename_parentat(AT_FDCWD, getname_kernel(name), 0, path, in kern_path_locked()
2238 path_put(path); in kern_path_locked()
2242 mutex_lock_nested(&path->dentry->d_inode->i_mutex, I_MUTEX_PARENT); in kern_path_locked()
2243 d = __lookup_hash(&last, path->dentry, 0); in kern_path_locked()
2245 mutex_unlock(&path->dentry->d_inode->i_mutex); in kern_path_locked()
2246 path_put(path); in kern_path_locked()
2252 int kern_path(const char *name, unsigned int flags, struct path *path) in kern_path() argument
2255 flags, path, NULL); in kern_path()
2269 struct path *path) in vfs_path_lookup() argument
2271 struct path root = {.mnt = mnt, .dentry = dentry}; in vfs_path_lookup()
2274 flags , path, &root); in vfs_path_lookup()
2330 struct path *path, int *empty) in user_path_at_empty() argument
2333 flags, path, NULL); in user_path_at_empty()
2344 user_path_parent(int dfd, const char __user *path, in user_path_parent() argument
2345 struct path *parent, in user_path_parent()
2351 return filename_parentat(dfd, getname(path), flags & LOOKUP_REVAL, in user_path_parent()
2383 mountpoint_last(struct nameidata *nd, struct path *path) in mountpoint_last() argument
2387 struct dentry *dir = nd->path.dentry; in mountpoint_last()
2401 dentry = dget(nd->path.dentry); in mountpoint_last()
2433 path->dentry = dentry; in mountpoint_last()
2434 path->mnt = nd->path.mnt; in mountpoint_last()
2435 error = should_follow_link(nd, path, nd->flags & LOOKUP_FOLLOW, in mountpoint_last()
2439 mntget(path->mnt); in mountpoint_last()
2440 follow_mount(path); in mountpoint_last()
2454 path_mountpoint(struct nameidata *nd, unsigned flags, struct path *path) in path_mountpoint() argument
2461 (err = mountpoint_last(nd, path)) > 0) { in path_mountpoint()
2473 filename_mountpoint(int dfd, struct filename *name, struct path *path, in filename_mountpoint() argument
2481 error = path_mountpoint(&nd, flags | LOOKUP_RCU, path); in filename_mountpoint()
2483 error = path_mountpoint(&nd, flags, path); in filename_mountpoint()
2485 error = path_mountpoint(&nd, flags | LOOKUP_REVAL, path); in filename_mountpoint()
2487 audit_inode(name, path->dentry, 0); in filename_mountpoint()
2509 struct path *path) in user_path_mountpoint_at() argument
2511 return filename_mountpoint(dfd, getname(name), path, flags); in user_path_mountpoint_at()
2515 kern_path_mountpoint(int dfd, const char *name, struct path *path, in kern_path_mountpoint() argument
2518 return filename_mountpoint(dfd, getname_kernel(name), path, flags); in kern_path_mountpoint()
2671 static int may_open(struct path *path, int acc_mode, int flag) in may_open() argument
2673 struct dentry *dentry = path->dentry; in may_open()
2693 if (path->mnt->mnt_flags & MNT_NODEV) in may_open()
2725 struct path *path = &filp->f_path; in handle_truncate() local
2726 struct inode *inode = path->dentry->d_inode; in handle_truncate()
2735 error = security_path_truncate(path); in handle_truncate()
2737 error = do_truncate(path->dentry, 0, in handle_truncate()
2752 static int may_o_create(struct path *dir, struct dentry *dentry, umode_t mode) in may_o_create()
2779 struct path *path, struct file *file, in atomic_open() argument
2784 struct inode *dir = nd->path.dentry->d_inode; in atomic_open()
2838 error = may_o_create(&nd->path, dentry, mode); in atomic_open()
2851 file->f_path.mnt = nd->path.mnt; in atomic_open()
2915 path->dentry = dentry; in atomic_open()
2916 path->mnt = nd->path.mnt; in atomic_open()
2938 static int lookup_open(struct nameidata *nd, struct path *path, in lookup_open() argument
2943 struct dentry *dir = nd->path.dentry; in lookup_open()
2959 return atomic_open(nd, dentry, path, file, op, got_write, in lookup_open()
2988 error = security_path_mknod(&nd->path, dentry, mode, 0); in lookup_open()
2997 path->dentry = dentry; in lookup_open()
2998 path->mnt = nd->path.mnt; in lookup_open()
3013 struct dentry *dir = nd->path.dentry; in do_last()
3020 struct path save_parent = { .dentry = NULL, .mnt = NULL }; in do_last()
3021 struct path path; in do_last() local
3039 error = lookup_fast(nd, &path, &inode, &seq); in do_last()
3066 error = mnt_want_write(nd->path.mnt); in do_last()
3076 error = lookup_open(nd, &path, file, op, got_write, opened); in do_last()
3096 path_to_nameidata(&path, nd); in do_last()
3103 if (d_is_positive(path.dentry)) in do_last()
3104 audit_inode(nd->name, path.dentry, 0); in do_last()
3112 mnt_drop_write(nd->path.mnt); in do_last()
3117 path_to_nameidata(&path, nd); in do_last()
3121 error = follow_managed(&path, nd); in do_last()
3127 if (unlikely(d_is_negative(path.dentry))) { in do_last()
3128 path_to_nameidata(&path, nd); in do_last()
3131 inode = d_backing_inode(path.dentry); in do_last()
3135 error = should_follow_link(nd, &path, nd->flags & LOOKUP_FOLLOW, in do_last()
3140 if ((nd->flags & LOOKUP_RCU) || nd->path.mnt != path.mnt) { in do_last()
3141 path_to_nameidata(&path, nd); in do_last()
3143 save_parent.dentry = nd->path.dentry; in do_last()
3144 save_parent.mnt = mntget(path.mnt); in do_last()
3145 nd->path.dentry = path.dentry; in do_last()
3157 audit_inode(nd->name, nd->path.dentry, 0); in do_last()
3158 if (unlikely(d_is_symlink(nd->path.dentry)) && !(open_flag & O_PATH)) { in do_last()
3163 if ((open_flag & O_CREAT) && d_is_dir(nd->path.dentry)) in do_last()
3166 if ((nd->flags & LOOKUP_DIRECTORY) && !d_can_lookup(nd->path.dentry)) in do_last()
3168 if (!d_is_reg(nd->path.dentry)) in do_last()
3172 error = mnt_want_write(nd->path.mnt); in do_last()
3178 error = may_open(&nd->path, acc_mode, open_flag); in do_last()
3183 error = vfs_open(&nd->path, file, current_cred()); in do_last()
3210 mnt_drop_write(nd->path.mnt); in do_last()
3224 path_put(&nd->path); in do_last()
3225 nd->path = save_parent; in do_last()
3230 mnt_drop_write(nd->path.mnt); in do_last()
3244 struct path path; in do_tmpfile() local
3245 int error = path_lookupat(nd, flags | LOOKUP_DIRECTORY, &path); in do_tmpfile()
3248 error = mnt_want_write(path.mnt); in do_tmpfile()
3251 dir = path.dentry->d_inode; in do_tmpfile()
3260 child = d_alloc(path.dentry, &name); in do_tmpfile()
3265 dput(path.dentry); in do_tmpfile()
3266 path.dentry = child; in do_tmpfile()
3272 error = may_open(&path, MAY_OPEN, op->open_flag); in do_tmpfile()
3275 file->f_path.mnt = path.mnt; in do_tmpfile()
3289 mnt_drop_write(path.mnt); in do_tmpfile()
3291 path_put(&path); in do_tmpfile()
3393 struct path *path, unsigned int lookup_flags) in filename_create() argument
3408 name = filename_parentat(dfd, name, lookup_flags, path, &last, &type); in filename_create()
3420 err2 = mnt_want_write(path->mnt); in filename_create()
3425 mutex_lock_nested(&path->dentry->d_inode->i_mutex, I_MUTEX_PARENT); in filename_create()
3426 dentry = __lookup_hash(&last, path->dentry, lookup_flags); in filename_create()
3454 mutex_unlock(&path->dentry->d_inode->i_mutex); in filename_create()
3456 mnt_drop_write(path->mnt); in filename_create()
3458 path_put(path); in filename_create()
3464 struct path *path, unsigned int lookup_flags) in kern_path_create() argument
3467 path, lookup_flags); in kern_path_create()
3471 void done_path_create(struct path *path, struct dentry *dentry) in done_path_create() argument
3474 mutex_unlock(&path->dentry->d_inode->i_mutex); in done_path_create()
3475 mnt_drop_write(path->mnt); in done_path_create()
3476 path_put(path); in done_path_create()
3481 struct path *path, unsigned int lookup_flags) in user_path_create() argument
3483 return filename_create(dfd, getname(pathname), path, lookup_flags); in user_path_create()
3536 struct path path; in SYSCALL_DEFINE4() local
3544 dentry = user_path_create(dfd, filename, &path, lookup_flags); in SYSCALL_DEFINE4()
3548 if (!IS_POSIXACL(path.dentry->d_inode)) in SYSCALL_DEFINE4()
3550 error = security_path_mknod(&path, dentry, mode, dev); in SYSCALL_DEFINE4()
3555 error = vfs_create(path.dentry->d_inode,dentry,mode,true); in SYSCALL_DEFINE4()
3558 error = vfs_mknod(path.dentry->d_inode,dentry,mode, in SYSCALL_DEFINE4()
3562 error = vfs_mknod(path.dentry->d_inode,dentry,mode,0); in SYSCALL_DEFINE4()
3566 done_path_create(&path, dentry); in SYSCALL_DEFINE4()
3608 struct path path; in SYSCALL_DEFINE3() local
3613 dentry = user_path_create(dfd, pathname, &path, lookup_flags); in SYSCALL_DEFINE3()
3617 if (!IS_POSIXACL(path.dentry->d_inode)) in SYSCALL_DEFINE3()
3619 error = security_path_mkdir(&path, dentry, mode); in SYSCALL_DEFINE3()
3621 error = vfs_mkdir(path.dentry->d_inode, dentry, mode); in SYSCALL_DEFINE3()
3622 done_path_create(&path, dentry); in SYSCALL_DEFINE3()
3704 struct path path; in do_rmdir() local
3710 &path, &last, &type, lookup_flags); in do_rmdir()
3726 error = mnt_want_write(path.mnt); in do_rmdir()
3730 mutex_lock_nested(&path.dentry->d_inode->i_mutex, I_MUTEX_PARENT); in do_rmdir()
3731 dentry = __lookup_hash(&last, path.dentry, lookup_flags); in do_rmdir()
3739 error = security_path_rmdir(&path, dentry); in do_rmdir()
3742 error = vfs_rmdir(path.dentry->d_inode, dentry); in do_rmdir()
3746 mutex_unlock(&path.dentry->d_inode->i_mutex); in do_rmdir()
3747 mnt_drop_write(path.mnt); in do_rmdir()
3749 path_put(&path); in do_rmdir()
3832 struct path path; in do_unlinkat() local
3840 &path, &last, &type, lookup_flags); in do_unlinkat()
3848 error = mnt_want_write(path.mnt); in do_unlinkat()
3852 mutex_lock_nested(&path.dentry->d_inode->i_mutex, I_MUTEX_PARENT); in do_unlinkat()
3853 dentry = __lookup_hash(&last, path.dentry, lookup_flags); in do_unlinkat()
3863 error = security_path_unlink(&path, dentry); in do_unlinkat()
3866 error = vfs_unlink(path.dentry->d_inode, dentry, &delegated_inode); in do_unlinkat()
3870 mutex_unlock(&path.dentry->d_inode->i_mutex); in do_unlinkat()
3879 mnt_drop_write(path.mnt); in do_unlinkat()
3881 path_put(&path); in do_unlinkat()
3943 struct path path; in SYSCALL_DEFINE3() local
3950 dentry = user_path_create(newdfd, newname, &path, lookup_flags); in SYSCALL_DEFINE3()
3955 error = security_path_symlink(&path, dentry, from->name); in SYSCALL_DEFINE3()
3957 error = vfs_symlink(path.dentry->d_inode, dentry, from->name); in SYSCALL_DEFINE3()
3958 done_path_create(&path, dentry); in SYSCALL_DEFINE3()
4059 struct path old_path, new_path; in SYSCALL_DEFINE5()
4317 struct path old_path, new_path; in SYSCALL_DEFINE5()