Lines Matching refs:path

469 void path_get(const struct path *path)  in path_get()  argument
471 mntget(path->mnt); in path_get()
472 dget(path->dentry); in path_get()
482 void path_put(const struct path *path) in path_put() argument
484 dput(path->dentry); in path_put()
485 mntput(path->mnt); in path_put()
491 struct path path; member
493 struct path root;
501 struct path link;
562 static bool path_connected(const struct path *path) in path_connected() argument
564 struct vfsmount *mnt = path->mnt; in path_connected()
571 return is_subdir(path->dentry, mnt->mnt_root); in path_connected()
598 path_put(&nd->path); in terminate_walk()
616 struct path *path, unsigned seq) in legitimize_path() argument
618 int res = __legitimize_mnt(path->mnt, nd->m_seq); in legitimize_path()
621 path->mnt = NULL; in legitimize_path()
622 path->dentry = NULL; in legitimize_path()
625 if (unlikely(!lockref_get_not_dead(&path->dentry->d_lockref))) { in legitimize_path()
626 path->dentry = NULL; in legitimize_path()
629 return !read_seqcount_retry(&path->dentry->d_seq, seq); in legitimize_path()
670 struct dentry *parent = nd->path.dentry; in unlazy_walk()
677 if (unlikely(!legitimize_path(nd, &nd->path, nd->seq))) in unlazy_walk()
688 nd->path.mnt = NULL; in unlazy_walk()
689 nd->path.dentry = NULL; in unlazy_walk()
718 if (unlikely(!legitimize_mnt(nd->path.mnt, nd->m_seq))) in unlazy_child()
720 if (unlikely(!lockref_get_not_dead(&nd->path.dentry->d_lockref))) in unlazy_child()
753 nd->path.mnt = NULL; in unlazy_child()
755 nd->path.dentry = NULL; in unlazy_child()
784 struct dentry *dentry = nd->path.dentry; in complete_walk()
827 static void path_put_conditional(struct path *path, struct nameidata *nd) in path_put_conditional() argument
829 dput(path->dentry); in path_put_conditional()
830 if (path->mnt != nd->path.mnt) in path_put_conditional()
831 mntput(path->mnt); in path_put_conditional()
834 static inline void path_to_nameidata(const struct path *path, in path_to_nameidata() argument
838 dput(nd->path.dentry); in path_to_nameidata()
839 if (nd->path.mnt != path->mnt) in path_to_nameidata()
840 mntput(nd->path.mnt); in path_to_nameidata()
842 nd->path.mnt = path->mnt; in path_to_nameidata()
843 nd->path.dentry = path->dentry; in path_to_nameidata()
850 nd->path = nd->root; in nd_jump_root()
851 d = nd->path.dentry; in nd_jump_root()
857 path_put(&nd->path); in nd_jump_root()
858 nd->path = nd->root; in nd_jump_root()
859 path_get(&nd->path); in nd_jump_root()
860 nd->inode = nd->path.dentry->d_inode; in nd_jump_root()
870 void nd_jump_link(struct path *path) in nd_jump_link() argument
873 path_put(&nd->path); in nd_jump_link()
875 nd->path = *path; in nd_jump_link()
876 nd->inode = nd->path.dentry->d_inode; in nd_jump_link()
987 static int may_linkat(struct path *link) in may_linkat()
1112 int follow_up(struct path *path) in follow_up() argument
1114 struct mount *mnt = real_mount(path->mnt); in follow_up()
1127 dput(path->dentry); in follow_up()
1128 path->dentry = mountpoint; in follow_up()
1129 mntput(path->mnt); in follow_up()
1130 path->mnt = &parent->mnt; in follow_up()
1140 static int follow_automount(struct path *path, struct nameidata *nd, in follow_automount() argument
1146 if (!path->dentry->d_op || !path->dentry->d_op->d_automount) in follow_automount()
1162 path->dentry->d_inode) in follow_automount()
1169 mnt = path->dentry->d_op->d_automount(path); in follow_automount()
1190 mntget(path->mnt); in follow_automount()
1193 err = finish_automount(mnt, path); in follow_automount()
1200 path_put(path); in follow_automount()
1201 path->mnt = mnt; in follow_automount()
1202 path->dentry = dget(mnt->mnt_root); in follow_automount()
1220 static int follow_managed(struct path *path, struct nameidata *nd) in follow_managed() argument
1222 struct vfsmount *mnt = path->mnt; /* held by caller, must be left alone */ in follow_managed()
1230 while (managed = READ_ONCE(path->dentry->d_flags), in follow_managed()
1236 BUG_ON(!path->dentry->d_op); in follow_managed()
1237 BUG_ON(!path->dentry->d_op->d_manage); in follow_managed()
1238 ret = path->dentry->d_op->d_manage(path, false); in follow_managed()
1245 struct vfsmount *mounted = lookup_mnt(path); in follow_managed()
1247 dput(path->dentry); in follow_managed()
1249 mntput(path->mnt); in follow_managed()
1250 path->mnt = mounted; in follow_managed()
1251 path->dentry = dget(mounted->mnt_root); in follow_managed()
1264 ret = follow_automount(path, nd, &need_mntput); in follow_managed()
1274 if (need_mntput && path->mnt == mnt) in follow_managed()
1275 mntput(path->mnt); in follow_managed()
1281 path_put_conditional(path, nd); in follow_managed()
1285 int follow_down_one(struct path *path) in follow_down_one() argument
1289 mounted = lookup_mnt(path); in follow_down_one()
1291 dput(path->dentry); in follow_down_one()
1292 mntput(path->mnt); in follow_down_one()
1293 path->mnt = mounted; in follow_down_one()
1294 path->dentry = dget(mounted->mnt_root); in follow_down_one()
1301 static inline int managed_dentry_rcu(const struct path *path) in managed_dentry_rcu() argument
1303 return (path->dentry->d_flags & DCACHE_MANAGE_TRANSIT) ? in managed_dentry_rcu()
1304 path->dentry->d_op->d_manage(path, true) : 0; in managed_dentry_rcu()
1311 static bool __follow_mount_rcu(struct nameidata *nd, struct path *path, in __follow_mount_rcu() argument
1320 switch (managed_dentry_rcu(path)) { in __follow_mount_rcu()
1330 if (!d_mountpoint(path->dentry)) in __follow_mount_rcu()
1331 return !(path->dentry->d_flags & DCACHE_NEED_AUTOMOUNT); in __follow_mount_rcu()
1333 mounted = __lookup_mnt(path->mnt, path->dentry); in __follow_mount_rcu()
1336 path->mnt = &mounted->mnt; in __follow_mount_rcu()
1337 path->dentry = mounted->mnt.mnt_root; in __follow_mount_rcu()
1339 *seqp = read_seqcount_begin(&path->dentry->d_seq); in __follow_mount_rcu()
1345 *inode = path->dentry->d_inode; in __follow_mount_rcu()
1348 !(path->dentry->d_flags & DCACHE_NEED_AUTOMOUNT); in __follow_mount_rcu()
1356 if (path_equal(&nd->path, &nd->root)) in follow_dotdot_rcu()
1358 if (nd->path.dentry != nd->path.mnt->mnt_root) { in follow_dotdot_rcu()
1359 struct dentry *old = nd->path.dentry; in follow_dotdot_rcu()
1367 nd->path.dentry = parent; in follow_dotdot_rcu()
1369 if (unlikely(!path_connected(&nd->path))) in follow_dotdot_rcu()
1373 struct mount *mnt = real_mount(nd->path.mnt); in follow_dotdot_rcu()
1380 if (&mparent->mnt == nd->path.mnt) in follow_dotdot_rcu()
1383 nd->path.dentry = mountpoint; in follow_dotdot_rcu()
1384 nd->path.mnt = &mparent->mnt; in follow_dotdot_rcu()
1389 while (unlikely(d_mountpoint(nd->path.dentry))) { in follow_dotdot_rcu()
1391 mounted = __lookup_mnt(nd->path.mnt, nd->path.dentry); in follow_dotdot_rcu()
1396 nd->path.mnt = &mounted->mnt; in follow_dotdot_rcu()
1397 nd->path.dentry = mounted->mnt.mnt_root; in follow_dotdot_rcu()
1398 inode = nd->path.dentry->d_inode; in follow_dotdot_rcu()
1399 nd->seq = read_seqcount_begin(&nd->path.dentry->d_seq); in follow_dotdot_rcu()
1410 int follow_down(struct path *path) in follow_down() argument
1415 while (managed = READ_ONCE(path->dentry->d_flags), in follow_down()
1428 BUG_ON(!path->dentry->d_op); in follow_down()
1429 BUG_ON(!path->dentry->d_op->d_manage); in follow_down()
1430 ret = path->dentry->d_op->d_manage(path, false); in follow_down()
1437 struct vfsmount *mounted = lookup_mnt(path); in follow_down()
1440 dput(path->dentry); in follow_down()
1441 mntput(path->mnt); in follow_down()
1442 path->mnt = mounted; in follow_down()
1443 path->dentry = dget(mounted->mnt_root); in follow_down()
1457 static void follow_mount(struct path *path) in follow_mount() argument
1459 while (d_mountpoint(path->dentry)) { in follow_mount()
1460 struct vfsmount *mounted = lookup_mnt(path); in follow_mount()
1463 dput(path->dentry); in follow_mount()
1464 mntput(path->mnt); in follow_mount()
1465 path->mnt = mounted; in follow_mount()
1466 path->dentry = dget(mounted->mnt_root); in follow_mount()
1470 static int path_parent_directory(struct path *path) in path_parent_directory() argument
1472 struct dentry *old = path->dentry; in path_parent_directory()
1474 path->dentry = dget_parent(path->dentry); in path_parent_directory()
1476 if (unlikely(!path_connected(path))) in path_parent_directory()
1484 if (path_equal(&nd->path, &nd->root)) in follow_dotdot()
1486 if (nd->path.dentry != nd->path.mnt->mnt_root) { in follow_dotdot()
1487 int ret = path_parent_directory(&nd->path); in follow_dotdot()
1492 if (!follow_up(&nd->path)) in follow_dotdot()
1495 follow_mount(&nd->path); in follow_dotdot()
1496 nd->inode = nd->path.dentry->d_inode; in follow_dotdot()
1555 struct path *path, struct inode **inode, in lookup_fast() argument
1558 struct vfsmount *mnt = nd->path.mnt; in lookup_fast()
1559 struct dentry *dentry, *parent = nd->path.dentry; in lookup_fast()
1606 path->mnt = mnt; in lookup_fast()
1607 path->dentry = dentry; in lookup_fast()
1608 if (likely(__follow_mount_rcu(nd, path, inode, seqp))) in lookup_fast()
1633 path->mnt = mnt; in lookup_fast()
1634 path->dentry = dentry; in lookup_fast()
1635 err = follow_managed(path, nd); in lookup_fast()
1637 *inode = d_backing_inode(path->dentry); in lookup_fast()
1718 static int pick_link(struct nameidata *nd, struct path *link, in pick_link()
1728 if (link->mnt == nd->path.mnt) in pick_link()
1738 nd->path.mnt = NULL; in pick_link()
1739 nd->path.dentry = NULL; in pick_link()
1768 static inline int step_into(struct nameidata *nd, struct path *path, in step_into() argument
1773 if (likely(!d_is_symlink(path->dentry)) || in step_into()
1776 path_to_nameidata(path, nd); in step_into()
1783 if (read_seqcount_retry(&path->dentry->d_seq, seq)) in step_into()
1786 return pick_link(nd, path, inode, seq); in step_into()
1791 struct path path; in walk_component() local
1806 err = lookup_fast(nd, &path, &inode, &seq); in walk_component()
1810 path.dentry = lookup_slow(&nd->last, nd->path.dentry, in walk_component()
1812 if (IS_ERR(path.dentry)) in walk_component()
1813 return PTR_ERR(path.dentry); in walk_component()
1815 path.mnt = nd->path.mnt; in walk_component()
1816 err = follow_managed(&path, nd); in walk_component()
1820 if (unlikely(d_is_negative(path.dentry))) { in walk_component()
1821 path_to_nameidata(&path, nd); in walk_component()
1826 inode = d_backing_inode(path.dentry); in walk_component()
1829 return step_into(nd, &path, flags, inode, seq); in walk_component()
2088 hash_len = hash_name(nd->path.dentry, name); in link_path_walk()
2102 struct dentry *parent = nd->path.dentry; in link_path_walk()
2161 if (unlikely(!d_can_lookup(nd->path.dentry))) { in link_path_walk()
2189 nd->path = nd->root; in path_init()
2192 nd->seq = __read_seqcount_begin(&nd->path.dentry->d_seq); in path_init()
2196 path_get(&nd->path); in path_init()
2202 nd->path.mnt = NULL; in path_init()
2203 nd->path.dentry = NULL; in path_init()
2218 nd->path = fs->pwd; in path_init()
2219 nd->inode = nd->path.dentry->d_inode; in path_init()
2220 nd->seq = __read_seqcount_begin(&nd->path.dentry->d_seq); in path_init()
2223 get_fs_pwd(current->fs, &nd->path); in path_init()
2224 nd->inode = nd->path.dentry->d_inode; in path_init()
2242 nd->path = f.file->f_path; in path_init()
2244 nd->inode = nd->path.dentry->d_inode; in path_init()
2245 nd->seq = read_seqcount_begin(&nd->path.dentry->d_seq); in path_init()
2247 path_get(&nd->path); in path_init()
2248 nd->inode = nd->path.dentry->d_inode; in path_init()
2278 struct path path = nd->path; in handle_lookup_down() local
2289 if (unlikely(!__follow_mount_rcu(nd, &path, &inode, &seq))) in handle_lookup_down()
2292 dget(path.dentry); in handle_lookup_down()
2293 err = follow_managed(&path, nd); in handle_lookup_down()
2296 inode = d_backing_inode(path.dentry); in handle_lookup_down()
2299 path_to_nameidata(&path, nd); in handle_lookup_down()
2306 static int path_lookupat(struct nameidata *nd, unsigned flags, struct path *path) in path_lookupat() argument
2325 if (!d_can_lookup(nd->path.dentry)) in path_lookupat()
2328 *path = nd->path; in path_lookupat()
2329 nd->path.mnt = NULL; in path_lookupat()
2330 nd->path.dentry = NULL; in path_lookupat()
2337 struct path *path, struct path *root) in filename_lookup() argument
2348 retval = path_lookupat(&nd, flags | LOOKUP_RCU, path); in filename_lookup()
2350 retval = path_lookupat(&nd, flags, path); in filename_lookup()
2352 retval = path_lookupat(&nd, flags | LOOKUP_REVAL, path); in filename_lookup()
2355 audit_inode(name, path->dentry, flags & LOOKUP_PARENT); in filename_lookup()
2363 struct path *parent) in path_parentat()
2370 *parent = nd->path; in path_parentat()
2371 nd->path.mnt = NULL; in path_parentat()
2372 nd->path.dentry = NULL; in path_parentat()
2379 unsigned int flags, struct path *parent, in filename_parentat()
2406 struct dentry *kern_path_locked(const char *name, struct path *path) in kern_path_locked() argument
2413 filename = filename_parentat(AT_FDCWD, getname_kernel(name), 0, path, in kern_path_locked()
2418 path_put(path); in kern_path_locked()
2422 inode_lock_nested(path->dentry->d_inode, I_MUTEX_PARENT); in kern_path_locked()
2423 d = __lookup_hash(&last, path->dentry, 0); in kern_path_locked()
2425 inode_unlock(path->dentry->d_inode); in kern_path_locked()
2426 path_put(path); in kern_path_locked()
2432 int kern_path(const char *name, unsigned int flags, struct path *path) in kern_path() argument
2435 flags, path, NULL); in kern_path()
2449 struct path *path) in vfs_path_lookup() argument
2451 struct path root = {.mnt = mnt, .dentry = dentry}; in vfs_path_lookup()
2454 flags , path, &root); in vfs_path_lookup()
2578 int path_pts(struct path *path) in path_pts() argument
2587 ret = path_parent_directory(path); in path_pts()
2591 parent = path->dentry; in path_pts()
2598 path->dentry = child; in path_pts()
2600 follow_mount(path); in path_pts()
2606 struct path *path, int *empty) in user_path_at_empty() argument
2609 flags, path, NULL); in user_path_at_empty()
2640 struct dentry *dir = nd->path.dentry; in mountpoint_last()
2641 struct path path; in mountpoint_last() local
2655 path.dentry = dget(nd->path.dentry); in mountpoint_last()
2657 path.dentry = d_lookup(dir, &nd->last); in mountpoint_last()
2658 if (!path.dentry) { in mountpoint_last()
2665 path.dentry = lookup_slow(&nd->last, dir, in mountpoint_last()
2667 if (IS_ERR(path.dentry)) in mountpoint_last()
2668 return PTR_ERR(path.dentry); in mountpoint_last()
2671 if (d_is_negative(path.dentry)) { in mountpoint_last()
2672 dput(path.dentry); in mountpoint_last()
2675 path.mnt = nd->path.mnt; in mountpoint_last()
2676 return step_into(nd, &path, 0, d_backing_inode(path.dentry), 0); in mountpoint_last()
2689 path_mountpoint(struct nameidata *nd, unsigned flags, struct path *path) in path_mountpoint() argument
2699 *path = nd->path; in path_mountpoint()
2700 nd->path.mnt = NULL; in path_mountpoint()
2701 nd->path.dentry = NULL; in path_mountpoint()
2702 follow_mount(path); in path_mountpoint()
2709 filename_mountpoint(int dfd, struct filename *name, struct path *path, in filename_mountpoint() argument
2717 error = path_mountpoint(&nd, flags | LOOKUP_RCU, path); in filename_mountpoint()
2719 error = path_mountpoint(&nd, flags, path); in filename_mountpoint()
2721 error = path_mountpoint(&nd, flags | LOOKUP_REVAL, path); in filename_mountpoint()
2723 audit_inode(name, path->dentry, 0); in filename_mountpoint()
2745 struct path *path) in user_path_mountpoint_at() argument
2747 return filename_mountpoint(dfd, getname(name), path, flags); in user_path_mountpoint_at()
2751 kern_path_mountpoint(int dfd, const char *name, struct path *path, in kern_path_mountpoint() argument
2754 return filename_mountpoint(dfd, getname_kernel(name), path, flags); in kern_path_mountpoint()
2940 bool may_open_dev(const struct path *path) in may_open_dev() argument
2942 return !(path->mnt->mnt_flags & MNT_NODEV) && in may_open_dev()
2943 !(path->mnt->mnt_sb->s_iflags & SB_I_NODEV); in may_open_dev()
2946 static int may_open(const struct path *path, int acc_mode, int flag) in may_open() argument
2948 struct dentry *dentry = path->dentry; in may_open()
2964 if (!may_open_dev(path)) in may_open()
2996 const struct path *path = &filp->f_path; in handle_truncate() local
2997 struct inode *inode = path->dentry->d_inode; in handle_truncate()
3006 error = security_path_truncate(path); in handle_truncate()
3008 error = do_truncate(path->dentry, 0, in handle_truncate()
3023 static int may_o_create(const struct path *dir, struct dentry *dentry, umode_t mode) in may_o_create()
3056 struct path *path, struct file *file, in atomic_open() argument
3061 struct inode *dir = nd->path.dentry->d_inode; in atomic_open()
3071 file->f_path.mnt = nd->path.mnt; in atomic_open()
3102 path->dentry = dentry; in atomic_open()
3103 path->mnt = nd->path.mnt; in atomic_open()
3127 static int lookup_open(struct nameidata *nd, struct path *path, in lookup_open() argument
3132 struct dentry *dir = nd->path.dentry; in lookup_open()
3187 create_error = may_o_create(&nd->path, dentry, mode); in lookup_open()
3204 error = atomic_open(nd, dentry, path, file, op, open_flag, in lookup_open()
3245 path->dentry = dentry; in lookup_open()
3246 path->mnt = nd->path.mnt; in lookup_open()
3260 struct dentry *dir = nd->path.dentry; in do_last()
3267 struct path path; in do_last() local
3284 error = lookup_fast(nd, &path, &inode, &seq); in do_last()
3311 error = mnt_want_write(nd->path.mnt); in do_last()
3324 error = lookup_open(nd, &path, file, op, got_write); in do_last()
3347 path_to_nameidata(&path, nd); in do_last()
3357 mnt_drop_write(nd->path.mnt); in do_last()
3361 error = follow_managed(&path, nd); in do_last()
3365 if (unlikely(d_is_negative(path.dentry))) { in do_last()
3366 path_to_nameidata(&path, nd); in do_last()
3373 audit_inode(nd->name, path.dentry, 0); in do_last()
3376 path_to_nameidata(&path, nd); in do_last()
3381 inode = d_backing_inode(path.dentry); in do_last()
3383 error = step_into(nd, &path, 0, inode, seq); in do_last()
3391 audit_inode(nd->name, nd->path.dentry, 0); in do_last()
3394 if (d_is_dir(nd->path.dentry)) in do_last()
3397 d_backing_inode(nd->path.dentry)); in do_last()
3402 if ((nd->flags & LOOKUP_DIRECTORY) && !d_can_lookup(nd->path.dentry)) in do_last()
3404 if (!d_is_reg(nd->path.dentry)) in do_last()
3408 error = mnt_want_write(nd->path.mnt); in do_last()
3414 error = may_open(&nd->path, acc_mode, open_flag); in do_last()
3418 error = vfs_open(&nd->path, file); in do_last()
3431 mnt_drop_write(nd->path.mnt); in do_last()
3478 struct path path; in do_tmpfile() local
3479 int error = path_lookupat(nd, flags | LOOKUP_DIRECTORY, &path); in do_tmpfile()
3482 error = mnt_want_write(path.mnt); in do_tmpfile()
3485 child = vfs_tmpfile(path.dentry, op->mode, op->open_flag); in do_tmpfile()
3489 dput(path.dentry); in do_tmpfile()
3490 path.dentry = child; in do_tmpfile()
3493 error = may_open(&path, 0, op->open_flag); in do_tmpfile()
3496 file->f_path.mnt = path.mnt; in do_tmpfile()
3499 mnt_drop_write(path.mnt); in do_tmpfile()
3501 path_put(&path); in do_tmpfile()
3507 struct path path; in do_o_path() local
3508 int error = path_lookupat(nd, flags, &path); in do_o_path()
3510 audit_inode(nd->name, path.dentry, 0); in do_o_path()
3511 error = vfs_open(&path, file); in do_o_path()
3512 path_put(&path); in do_o_path()
3603 struct path *path, unsigned int lookup_flags) in filename_create() argument
3618 name = filename_parentat(dfd, name, lookup_flags, path, &last, &type); in filename_create()
3630 err2 = mnt_want_write(path->mnt); in filename_create()
3635 inode_lock_nested(path->dentry->d_inode, I_MUTEX_PARENT); in filename_create()
3636 dentry = __lookup_hash(&last, path->dentry, lookup_flags); in filename_create()
3664 inode_unlock(path->dentry->d_inode); in filename_create()
3666 mnt_drop_write(path->mnt); in filename_create()
3668 path_put(path); in filename_create()
3674 struct path *path, unsigned int lookup_flags) in kern_path_create() argument
3677 path, lookup_flags); in kern_path_create()
3681 void done_path_create(struct path *path, struct dentry *dentry) in done_path_create() argument
3684 inode_unlock(path->dentry->d_inode); in done_path_create()
3685 mnt_drop_write(path->mnt); in done_path_create()
3686 path_put(path); in done_path_create()
3691 struct path *path, unsigned int lookup_flags) in user_path_create() argument
3693 return filename_create(dfd, getname(pathname), path, lookup_flags); in user_path_create()
3747 struct path path; in do_mknodat() local
3755 dentry = user_path_create(dfd, filename, &path, lookup_flags); in do_mknodat()
3759 if (!IS_POSIXACL(path.dentry->d_inode)) in do_mknodat()
3761 error = security_path_mknod(&path, dentry, mode, dev); in do_mknodat()
3766 error = vfs_create(path.dentry->d_inode,dentry,mode,true); in do_mknodat()
3771 error = vfs_mknod(path.dentry->d_inode,dentry,mode, in do_mknodat()
3775 error = vfs_mknod(path.dentry->d_inode,dentry,mode,0); in do_mknodat()
3779 done_path_create(&path, dentry); in do_mknodat()
3827 struct path path; in do_mkdirat() local
3832 dentry = user_path_create(dfd, pathname, &path, lookup_flags); in do_mkdirat()
3836 if (!IS_POSIXACL(path.dentry->d_inode)) in do_mkdirat()
3838 error = security_path_mkdir(&path, dentry, mode); in do_mkdirat()
3840 error = vfs_mkdir(path.dentry->d_inode, dentry, mode); in do_mkdirat()
3841 done_path_create(&path, dentry); in do_mkdirat()
3903 struct path path; in do_rmdir() local
3909 &path, &last, &type); in do_rmdir()
3925 error = mnt_want_write(path.mnt); in do_rmdir()
3929 inode_lock_nested(path.dentry->d_inode, I_MUTEX_PARENT); in do_rmdir()
3930 dentry = __lookup_hash(&last, path.dentry, lookup_flags); in do_rmdir()
3938 error = security_path_rmdir(&path, dentry); in do_rmdir()
3941 error = vfs_rmdir(path.dentry->d_inode, dentry); in do_rmdir()
3945 inode_unlock(path.dentry->d_inode); in do_rmdir()
3946 mnt_drop_write(path.mnt); in do_rmdir()
3948 path_put(&path); in do_rmdir()
4030 struct path path; in do_unlinkat() local
4037 name = filename_parentat(dfd, name, lookup_flags, &path, &last, &type); in do_unlinkat()
4045 error = mnt_want_write(path.mnt); in do_unlinkat()
4049 inode_lock_nested(path.dentry->d_inode, I_MUTEX_PARENT); in do_unlinkat()
4050 dentry = __lookup_hash(&last, path.dentry, lookup_flags); in do_unlinkat()
4060 error = security_path_unlink(&path, dentry); in do_unlinkat()
4063 error = vfs_unlink(path.dentry->d_inode, dentry, &delegated_inode); in do_unlinkat()
4067 inode_unlock(path.dentry->d_inode); in do_unlinkat()
4076 mnt_drop_write(path.mnt); in do_unlinkat()
4078 path_put(&path); in do_unlinkat()
4140 struct path path; in do_symlinkat() local
4147 dentry = user_path_create(newdfd, newname, &path, lookup_flags); in do_symlinkat()
4152 error = security_path_symlink(&path, dentry, from->name); in do_symlinkat()
4154 error = vfs_symlink(path.dentry->d_inode, dentry, from->name); in do_symlinkat()
4155 done_path_create(&path, dentry); in do_symlinkat()
4269 struct path old_path, new_path; in do_linkat()
4521 struct path old_path, new_path; in do_renameat2()