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()
496 struct path path; member
498 struct path root;
515 static bool path_connected(const struct path *path) in path_connected() argument
517 struct vfsmount *mnt = path->mnt; in path_connected()
523 return is_subdir(path->dentry, mnt->mnt_root); in path_connected()
550 struct dentry *parent = nd->path.dentry; in unlazy_walk()
562 if (!legitimize_mnt(nd->path.mnt, nd->m_seq)) in unlazy_walk()
567 nd->path.dentry = NULL; in unlazy_walk()
639 struct dentry *dentry = nd->path.dentry; in complete_walk()
647 if (!legitimize_mnt(nd->path.mnt, nd->m_seq)) { in complete_walk()
653 mntput(nd->path.mnt); in complete_walk()
659 mntput(nd->path.mnt); in complete_walk()
678 path_put(&nd->path); in complete_walk()
702 static void path_put_conditional(struct path *path, struct nameidata *nd) in path_put_conditional() argument
704 dput(path->dentry); in path_put_conditional()
705 if (path->mnt != nd->path.mnt) in path_put_conditional()
706 mntput(path->mnt); in path_put_conditional()
709 static inline void path_to_nameidata(const struct path *path, in path_to_nameidata() argument
713 dput(nd->path.dentry); in path_to_nameidata()
714 if (nd->path.mnt != path->mnt) in path_to_nameidata()
715 mntput(nd->path.mnt); in path_to_nameidata()
717 nd->path.mnt = path->mnt; in path_to_nameidata()
718 nd->path.dentry = path->dentry; in path_to_nameidata()
725 void nd_jump_link(struct nameidata *nd, struct path *path) in nd_jump_link() argument
727 path_put(&nd->path); in nd_jump_link()
729 nd->path = *path; in nd_jump_link()
730 nd->inode = nd->path.dentry->d_inode; in nd_jump_link()
734 void nd_set_link(struct nameidata *nd, char *path) in nd_set_link() argument
736 nd->saved_names[nd->depth] = path; in nd_set_link()
746 static inline void put_link(struct nameidata *nd, struct path *link, void *cookie) in put_link()
773 static inline int may_follow_link(struct path *link, struct nameidata *nd) in may_follow_link()
787 parent = nd->path.dentry->d_inode; in may_follow_link()
797 path_put(&nd->path); in may_follow_link()
848 static int may_linkat(struct path *link) in may_linkat()
871 follow_link(struct path *link, struct nameidata *nd, void **p) in follow_link()
879 if (link->mnt == nd->path.mnt) in follow_link()
906 path_put(&nd->path); in follow_link()
913 path_put(&nd->path); in follow_link()
914 nd->path = nd->root; in follow_link()
918 nd->inode = nd->path.dentry->d_inode; in follow_link()
928 path_put(&nd->path); in follow_link()
933 static int follow_up_rcu(struct path *path) in follow_up_rcu() argument
935 struct mount *mnt = real_mount(path->mnt); in follow_up_rcu()
940 if (&parent->mnt == path->mnt) in follow_up_rcu()
943 path->dentry = mountpoint; in follow_up_rcu()
944 path->mnt = &parent->mnt; in follow_up_rcu()
958 int follow_up(struct path *path) in follow_up() argument
960 struct mount *mnt = real_mount(path->mnt); in follow_up()
973 dput(path->dentry); in follow_up()
974 path->dentry = mountpoint; in follow_up()
975 mntput(path->mnt); in follow_up()
976 path->mnt = &parent->mnt; in follow_up()
986 static int follow_automount(struct path *path, unsigned flags, in follow_automount() argument
992 if (!path->dentry->d_op || !path->dentry->d_op->d_automount) in follow_automount()
1008 path->dentry->d_inode) in follow_automount()
1015 mnt = path->dentry->d_op->d_automount(path); in follow_automount()
1036 mntget(path->mnt); in follow_automount()
1039 err = finish_automount(mnt, path); in follow_automount()
1046 path_put(path); in follow_automount()
1047 path->mnt = mnt; in follow_automount()
1048 path->dentry = dget(mnt->mnt_root); in follow_automount()
1066 static int follow_managed(struct path *path, unsigned flags) in follow_managed() argument
1068 struct vfsmount *mnt = path->mnt; /* held by caller, must be left alone */ in follow_managed()
1076 while (managed = ACCESS_ONCE(path->dentry->d_flags), in follow_managed()
1082 BUG_ON(!path->dentry->d_op); in follow_managed()
1083 BUG_ON(!path->dentry->d_op->d_manage); in follow_managed()
1084 ret = path->dentry->d_op->d_manage(path->dentry, false); in follow_managed()
1091 struct vfsmount *mounted = lookup_mnt(path); in follow_managed()
1093 dput(path->dentry); in follow_managed()
1095 mntput(path->mnt); in follow_managed()
1096 path->mnt = mounted; in follow_managed()
1097 path->dentry = dget(mounted->mnt_root); in follow_managed()
1110 ret = follow_automount(path, flags, &need_mntput); in follow_managed()
1120 if (need_mntput && path->mnt == mnt) in follow_managed()
1121 mntput(path->mnt); in follow_managed()
1127 int follow_down_one(struct path *path) in follow_down_one() argument
1131 mounted = lookup_mnt(path); in follow_down_one()
1133 dput(path->dentry); in follow_down_one()
1134 mntput(path->mnt); in follow_down_one()
1135 path->mnt = mounted; in follow_down_one()
1136 path->dentry = dget(mounted->mnt_root); in follow_down_one()
1153 static bool __follow_mount_rcu(struct nameidata *nd, struct path *path, in __follow_mount_rcu() argument
1162 switch (managed_dentry_rcu(path->dentry)) { in __follow_mount_rcu()
1172 if (!d_mountpoint(path->dentry)) in __follow_mount_rcu()
1173 return !(path->dentry->d_flags & DCACHE_NEED_AUTOMOUNT); in __follow_mount_rcu()
1175 mounted = __lookup_mnt(path->mnt, path->dentry); in __follow_mount_rcu()
1178 path->mnt = &mounted->mnt; in __follow_mount_rcu()
1179 path->dentry = mounted->mnt.mnt_root; in __follow_mount_rcu()
1181 nd->seq = read_seqcount_begin(&path->dentry->d_seq); in __follow_mount_rcu()
1187 *inode = path->dentry->d_inode; in __follow_mount_rcu()
1190 !(path->dentry->d_flags & DCACHE_NEED_AUTOMOUNT); in __follow_mount_rcu()
1200 if (nd->path.dentry == nd->root.dentry && in follow_dotdot_rcu()
1201 nd->path.mnt == nd->root.mnt) { in follow_dotdot_rcu()
1204 if (nd->path.dentry != nd->path.mnt->mnt_root) { in follow_dotdot_rcu()
1205 struct dentry *old = nd->path.dentry; in follow_dotdot_rcu()
1213 nd->path.dentry = parent; in follow_dotdot_rcu()
1215 if (unlikely(!path_connected(&nd->path))) in follow_dotdot_rcu()
1219 if (!follow_up_rcu(&nd->path)) in follow_dotdot_rcu()
1221 inode = nd->path.dentry->d_inode; in follow_dotdot_rcu()
1222 nd->seq = read_seqcount_begin(&nd->path.dentry->d_seq); in follow_dotdot_rcu()
1224 while (d_mountpoint(nd->path.dentry)) { in follow_dotdot_rcu()
1226 mounted = __lookup_mnt(nd->path.mnt, nd->path.dentry); in follow_dotdot_rcu()
1229 nd->path.mnt = &mounted->mnt; in follow_dotdot_rcu()
1230 nd->path.dentry = mounted->mnt.mnt_root; in follow_dotdot_rcu()
1231 inode = nd->path.dentry->d_inode; in follow_dotdot_rcu()
1232 nd->seq = read_seqcount_begin(&nd->path.dentry->d_seq); in follow_dotdot_rcu()
1252 int follow_down(struct path *path) in follow_down() argument
1257 while (managed = ACCESS_ONCE(path->dentry->d_flags), in follow_down()
1270 BUG_ON(!path->dentry->d_op); in follow_down()
1271 BUG_ON(!path->dentry->d_op->d_manage); in follow_down()
1272 ret = path->dentry->d_op->d_manage( in follow_down()
1273 path->dentry, false); in follow_down()
1280 struct vfsmount *mounted = lookup_mnt(path); in follow_down()
1283 dput(path->dentry); in follow_down()
1284 mntput(path->mnt); in follow_down()
1285 path->mnt = mounted; in follow_down()
1286 path->dentry = dget(mounted->mnt_root); in follow_down()
1300 static void follow_mount(struct path *path) in follow_mount() argument
1302 while (d_mountpoint(path->dentry)) { in follow_mount()
1303 struct vfsmount *mounted = lookup_mnt(path); in follow_mount()
1306 dput(path->dentry); in follow_mount()
1307 mntput(path->mnt); in follow_mount()
1308 path->mnt = mounted; in follow_mount()
1309 path->dentry = dget(mounted->mnt_root); in follow_mount()
1319 struct dentry *old = nd->path.dentry; in follow_dotdot()
1321 if (nd->path.dentry == nd->root.dentry && in follow_dotdot()
1322 nd->path.mnt == nd->root.mnt) { in follow_dotdot()
1325 if (nd->path.dentry != nd->path.mnt->mnt_root) { in follow_dotdot()
1327 nd->path.dentry = dget_parent(nd->path.dentry); in follow_dotdot()
1329 if (unlikely(!path_connected(&nd->path))) { in follow_dotdot()
1330 path_put(&nd->path); in follow_dotdot()
1335 if (!follow_up(&nd->path)) in follow_dotdot()
1338 follow_mount(&nd->path); in follow_dotdot()
1339 nd->inode = nd->path.dentry->d_inode; in follow_dotdot()
1428 struct path *path, struct inode **inode) in lookup_fast() argument
1430 struct vfsmount *mnt = nd->path.mnt; in lookup_fast()
1431 struct dentry *dentry, *parent = nd->path.dentry; in lookup_fast()
1482 path->mnt = mnt; in lookup_fast()
1483 path->dentry = dentry; in lookup_fast()
1484 if (likely(__follow_mount_rcu(nd, path, inode))) in lookup_fast()
1512 path->mnt = mnt; in lookup_fast()
1513 path->dentry = dentry; in lookup_fast()
1514 err = follow_managed(path, nd->flags); in lookup_fast()
1516 path_put_conditional(path, nd); in lookup_fast()
1521 *inode = path->dentry->d_inode; in lookup_fast()
1529 static int lookup_slow(struct nameidata *nd, struct path *path) in lookup_slow() argument
1534 parent = nd->path.dentry; in lookup_slow()
1542 path->mnt = nd->path.mnt; in lookup_slow()
1543 path->dentry = dentry; in lookup_slow()
1544 err = follow_managed(path, nd->flags); in lookup_slow()
1546 path_put_conditional(path, nd); in lookup_slow()
1581 path_put(&nd->path); in terminate_walk()
1601 static inline int walk_component(struct nameidata *nd, struct path *path, in walk_component() argument
1613 err = lookup_fast(nd, path, &inode); in walk_component()
1618 err = lookup_slow(nd, path); in walk_component()
1623 if (d_is_negative(path->dentry)) in walk_component()
1625 inode = path->dentry->d_inode; in walk_component()
1628 if (should_follow_link(path->dentry, follow)) { in walk_component()
1630 if (unlikely(nd->path.mnt != path->mnt || in walk_component()
1631 unlazy_walk(nd, path->dentry))) { in walk_component()
1636 BUG_ON(inode != path->dentry->d_inode); in walk_component()
1639 path_to_nameidata(path, nd); in walk_component()
1644 path_to_nameidata(path, nd); in walk_component()
1657 static inline int nested_symlink(struct path *path, struct nameidata *nd) in nested_symlink() argument
1662 path_put_conditional(path, nd); in nested_symlink()
1663 path_put(&nd->path); in nested_symlink()
1672 struct path link = *path; in nested_symlink()
1678 res = walk_component(nd, path, LOOKUP_FOLLOW); in nested_symlink()
1813 struct path next; in link_path_walk()
1844 struct dentry *parent = nd->path.dentry; in link_path_walk()
1882 if (!d_can_lookup(nd->path.dentry)) { in link_path_walk()
1911 nd->path = nd->root; in path_init()
1915 nd->seq = __read_seqcount_begin(&nd->path.dentry->d_seq); in path_init()
1918 path_get(&nd->path); in path_init()
1934 nd->path = nd->root; in path_init()
1944 nd->path = fs->pwd; in path_init()
1945 nd->seq = __read_seqcount_begin(&nd->path.dentry->d_seq); in path_init()
1948 get_fs_pwd(current->fs, &nd->path); in path_init()
1967 nd->path = f.file->f_path; in path_init()
1971 nd->seq = __read_seqcount_begin(&nd->path.dentry->d_seq); in path_init()
1974 path_get(&nd->path); in path_init()
1979 nd->inode = nd->path.dentry->d_inode; in path_init()
1982 if (likely(!read_seqcount_retry(&nd->path.dentry->d_seq, nd->seq))) in path_init()
2003 static inline int lookup_last(struct nameidata *nd, struct path *path) in lookup_last() argument
2009 return walk_component(nd, path, nd->flags & LOOKUP_FOLLOW); in lookup_last()
2016 struct path path; in path_lookupat() local
2035 err = lookup_last(nd, &path); in path_lookupat()
2038 struct path link = path; in path_lookupat()
2046 err = lookup_last(nd, &path); in path_lookupat()
2055 if (!d_can_lookup(nd->path.dentry)) { in path_lookupat()
2056 path_put(&nd->path); in path_lookupat()
2075 audit_inode(name, nd->path.dentry, flags & LOOKUP_PARENT); in filename_lookup()
2080 struct dentry *kern_path_locked(const char *name, struct path *path) in kern_path_locked() argument
2096 path_put(&nd.path); in kern_path_locked()
2100 mutex_lock_nested(&nd.path.dentry->d_inode->i_mutex, I_MUTEX_PARENT); in kern_path_locked()
2101 d = __lookup_hash(&nd.last, nd.path.dentry, 0); in kern_path_locked()
2103 mutex_unlock(&nd.path.dentry->d_inode->i_mutex); in kern_path_locked()
2104 path_put(&nd.path); in kern_path_locked()
2107 *path = nd.path; in kern_path_locked()
2113 int kern_path(const char *name, unsigned int flags, struct path *path) in kern_path() argument
2123 *path = nd.path; in kern_path()
2139 struct path *path) in vfs_path_lookup() argument
2154 *path = nd.path; in vfs_path_lookup()
2168 return __lookup_hash(&nd->last, nd->path.dentry, nd->flags); in lookup_hash()
2223 struct path *path, int *empty) in user_path_at_empty() argument
2235 *path = nd.path; in user_path_at_empty()
2241 struct path *path) in user_path_at() argument
2243 return user_path_at_empty(dfd, name, flags, path, NULL); in user_path_at()
2254 user_path_parent(int dfd, const char __user *path, struct nameidata *nd, in user_path_parent() argument
2257 struct filename *s = getname(path); in user_path_parent()
2303 mountpoint_last(struct nameidata *nd, struct path *path) in mountpoint_last() argument
2307 struct dentry *dir = nd->path.dentry; in mountpoint_last()
2323 dentry = dget(nd->path.dentry); in mountpoint_last()
2356 path->dentry = dentry; in mountpoint_last()
2357 path->mnt = nd->path.mnt; in mountpoint_last()
2360 mntget(path->mnt); in mountpoint_last()
2361 follow_mount(path); in mountpoint_last()
2379 path_mountpoint(int dfd, const struct filename *name, struct path *path, in path_mountpoint() argument
2389 err = mountpoint_last(&nd, path); in path_mountpoint()
2392 struct path link = *path; in path_mountpoint()
2400 err = mountpoint_last(&nd, path); in path_mountpoint()
2409 filename_mountpoint(int dfd, struct filename *name, struct path *path, in filename_mountpoint() argument
2415 error = path_mountpoint(dfd, name, path, flags | LOOKUP_RCU); in filename_mountpoint()
2417 error = path_mountpoint(dfd, name, path, flags); in filename_mountpoint()
2419 error = path_mountpoint(dfd, name, path, flags | LOOKUP_REVAL); in filename_mountpoint()
2421 audit_inode(name, path->dentry, 0); in filename_mountpoint()
2442 struct path *path) in user_path_mountpoint_at() argument
2444 return filename_mountpoint(dfd, getname(name), path, flags); in user_path_mountpoint_at()
2448 kern_path_mountpoint(int dfd, const char *name, struct path *path, in kern_path_mountpoint() argument
2451 return filename_mountpoint(dfd, getname_kernel(name), path, flags); in kern_path_mountpoint()
2604 static int may_open(struct path *path, int acc_mode, int flag) in may_open() argument
2606 struct dentry *dentry = path->dentry; in may_open()
2626 if (path->mnt->mnt_flags & MNT_NODEV) in may_open()
2658 struct path *path = &filp->f_path; in handle_truncate() local
2659 struct inode *inode = path->dentry->d_inode; in handle_truncate()
2668 error = security_path_truncate(path); in handle_truncate()
2670 error = do_truncate(path->dentry, 0, in handle_truncate()
2685 static int may_o_create(struct path *dir, struct dentry *dentry, umode_t mode) in may_o_create()
2712 struct path *path, struct file *file, in atomic_open() argument
2717 struct inode *dir = nd->path.dentry->d_inode; in atomic_open()
2771 error = may_o_create(&nd->path, dentry, mode); in atomic_open()
2784 file->f_path.mnt = nd->path.mnt; in atomic_open()
2848 path->dentry = dentry; in atomic_open()
2849 path->mnt = nd->path.mnt; in atomic_open()
2871 static int lookup_open(struct nameidata *nd, struct path *path, in lookup_open() argument
2876 struct dentry *dir = nd->path.dentry; in lookup_open()
2892 return atomic_open(nd, dentry, path, file, op, got_write, in lookup_open()
2921 error = security_path_mknod(&nd->path, dentry, mode, 0); in lookup_open()
2930 path->dentry = dentry; in lookup_open()
2931 path->mnt = nd->path.mnt; in lookup_open()
2942 static int do_last(struct nameidata *nd, struct path *path, in do_last() argument
2946 struct dentry *dir = nd->path.dentry; in do_last()
2953 struct path save_parent = { .dentry = NULL, .mnt = NULL }; in do_last()
2973 error = lookup_fast(nd, path, &inode); in do_last()
3001 error = mnt_want_write(nd->path.mnt); in do_last()
3011 error = lookup_open(nd, path, file, op, got_write, opened); in do_last()
3031 path_to_nameidata(path, nd); in do_last()
3038 if (d_is_positive(path->dentry)) in do_last()
3039 audit_inode(name, path->dentry, 0); in do_last()
3047 mnt_drop_write(nd->path.mnt); in do_last()
3055 error = follow_managed(path, nd->flags); in do_last()
3063 inode = path->dentry->d_inode; in do_last()
3065 if (d_is_negative(path->dentry)) { in do_last()
3066 path_to_nameidata(path, nd); in do_last()
3069 inode = path->dentry->d_inode; in do_last()
3072 if (should_follow_link(path->dentry, !symlink_ok)) { in do_last()
3074 if (unlikely(nd->path.mnt != path->mnt || in do_last()
3075 unlazy_walk(nd, path->dentry))) { in do_last()
3080 BUG_ON(inode != path->dentry->d_inode); in do_last()
3084 if ((nd->flags & LOOKUP_RCU) || nd->path.mnt != path->mnt) { in do_last()
3085 path_to_nameidata(path, nd); in do_last()
3087 save_parent.dentry = nd->path.dentry; in do_last()
3088 save_parent.mnt = mntget(path->mnt); in do_last()
3089 nd->path.dentry = path->dentry; in do_last()
3100 audit_inode(name, nd->path.dentry, 0); in do_last()
3102 if ((open_flag & O_CREAT) && d_is_dir(nd->path.dentry)) in do_last()
3105 if ((nd->flags & LOOKUP_DIRECTORY) && !d_can_lookup(nd->path.dentry)) in do_last()
3107 if (!d_is_reg(nd->path.dentry)) in do_last()
3111 error = mnt_want_write(nd->path.mnt); in do_last()
3117 error = may_open(&nd->path, acc_mode, open_flag); in do_last()
3122 error = vfs_open(&nd->path, file, current_cred()); in do_last()
3149 mnt_drop_write(nd->path.mnt); in do_last()
3155 path_put_conditional(path, nd); in do_last()
3167 path_put(&nd->path); in do_last()
3168 nd->path = save_parent; in do_last()
3173 mnt_drop_write(nd->path.mnt); in do_last()
3192 error = mnt_want_write(nd->path.mnt); in do_tmpfile()
3199 dentry = nd->path.dentry; in do_tmpfile()
3212 dput(nd->path.dentry); in do_tmpfile()
3213 nd->path.dentry = child; in do_tmpfile()
3214 error = dir->i_op->tmpfile(dir, nd->path.dentry, op->mode); in do_tmpfile()
3217 audit_inode(pathname, nd->path.dentry, 0); in do_tmpfile()
3219 error = may_open(&nd->path, MAY_OPEN, op->open_flag); in do_tmpfile()
3222 file->f_path.mnt = nd->path.mnt; in do_tmpfile()
3223 error = finish_open(file, nd->path.dentry, NULL, opened); in do_tmpfile()
3236 mnt_drop_write(nd->path.mnt); in do_tmpfile()
3238 path_put(&nd->path); in do_tmpfile()
3246 struct path path; in path_openat() local
3265 error = do_last(nd, &path, file, op, &opened, pathname); in path_openat()
3267 struct path link = path; in path_openat()
3270 path_put_conditional(&path, nd); in path_openat()
3271 path_put(&nd->path); in path_openat()
3283 error = do_last(nd, &path, file, op, &opened, pathname); in path_openat()
3348 struct path *path, unsigned int lookup_flags) in filename_create() argument
3376 err2 = mnt_want_write(nd.path.mnt); in filename_create()
3380 mutex_lock_nested(&nd.path.dentry->d_inode->i_mutex, I_MUTEX_PARENT); in filename_create()
3403 *path = nd.path; in filename_create()
3409 mutex_unlock(&nd.path.dentry->d_inode->i_mutex); in filename_create()
3411 mnt_drop_write(nd.path.mnt); in filename_create()
3413 path_put(&nd.path); in filename_create()
3418 struct path *path, unsigned int lookup_flags) in kern_path_create() argument
3425 res = filename_create(dfd, filename, path, lookup_flags); in kern_path_create()
3431 void done_path_create(struct path *path, struct dentry *dentry) in done_path_create() argument
3434 mutex_unlock(&path->dentry->d_inode->i_mutex); in done_path_create()
3435 mnt_drop_write(path->mnt); in done_path_create()
3436 path_put(path); in done_path_create()
3441 struct path *path, unsigned int lookup_flags) in user_path_create() argument
3447 res = filename_create(dfd, tmp, path, lookup_flags); in user_path_create()
3502 struct path path; in SYSCALL_DEFINE4() local
3510 dentry = user_path_create(dfd, filename, &path, lookup_flags); in SYSCALL_DEFINE4()
3514 if (!IS_POSIXACL(path.dentry->d_inode)) in SYSCALL_DEFINE4()
3516 error = security_path_mknod(&path, dentry, mode, dev); in SYSCALL_DEFINE4()
3521 error = vfs_create(path.dentry->d_inode,dentry,mode,true); in SYSCALL_DEFINE4()
3524 error = vfs_mknod(path.dentry->d_inode,dentry,mode, in SYSCALL_DEFINE4()
3528 error = vfs_mknod(path.dentry->d_inode,dentry,mode,0); in SYSCALL_DEFINE4()
3532 done_path_create(&path, dentry); in SYSCALL_DEFINE4()
3574 struct path path; in SYSCALL_DEFINE3() local
3579 dentry = user_path_create(dfd, pathname, &path, lookup_flags); in SYSCALL_DEFINE3()
3583 if (!IS_POSIXACL(path.dentry->d_inode)) in SYSCALL_DEFINE3()
3585 error = security_path_mkdir(&path, dentry, mode); in SYSCALL_DEFINE3()
3587 error = vfs_mkdir(path.dentry->d_inode, dentry, mode); in SYSCALL_DEFINE3()
3588 done_path_create(&path, dentry); in SYSCALL_DEFINE3()
3690 error = mnt_want_write(nd.path.mnt); in do_rmdir()
3694 mutex_lock_nested(&nd.path.dentry->d_inode->i_mutex, I_MUTEX_PARENT); in do_rmdir()
3703 error = security_path_rmdir(&nd.path, dentry); in do_rmdir()
3706 error = vfs_rmdir(nd.path.dentry->d_inode, dentry); in do_rmdir()
3710 mutex_unlock(&nd.path.dentry->d_inode->i_mutex); in do_rmdir()
3711 mnt_drop_write(nd.path.mnt); in do_rmdir()
3713 path_put(&nd.path); in do_rmdir()
3810 error = mnt_want_write(nd.path.mnt); in do_unlinkat()
3814 mutex_lock_nested(&nd.path.dentry->d_inode->i_mutex, I_MUTEX_PARENT); in do_unlinkat()
3825 error = security_path_unlink(&nd.path, dentry); in do_unlinkat()
3828 error = vfs_unlink(nd.path.dentry->d_inode, dentry, &delegated_inode); in do_unlinkat()
3832 mutex_unlock(&nd.path.dentry->d_inode->i_mutex); in do_unlinkat()
3841 mnt_drop_write(nd.path.mnt); in do_unlinkat()
3843 path_put(&nd.path); in do_unlinkat()
3905 struct path path; in SYSCALL_DEFINE3() local
3912 dentry = user_path_create(newdfd, newname, &path, lookup_flags); in SYSCALL_DEFINE3()
3917 error = security_path_symlink(&path, dentry, from->name); in SYSCALL_DEFINE3()
3919 error = vfs_symlink(path.dentry->d_inode, dentry, from->name); in SYSCALL_DEFINE3()
3920 done_path_create(&path, dentry); in SYSCALL_DEFINE3()
4021 struct path old_path, new_path; in SYSCALL_DEFINE5()
4308 if (oldnd.path.mnt != newnd.path.mnt) in SYSCALL_DEFINE5()
4311 old_dir = oldnd.path.dentry; in SYSCALL_DEFINE5()
4316 new_dir = newnd.path.dentry; in SYSCALL_DEFINE5()
4322 error = mnt_want_write(oldnd.path.mnt); in SYSCALL_DEFINE5()
4378 error = security_path_rename(&oldnd.path, old_dentry, in SYSCALL_DEFINE5()
4379 &newnd.path, new_dentry, flags); in SYSCALL_DEFINE5()
4396 mnt_drop_write(oldnd.path.mnt); in SYSCALL_DEFINE5()
4400 path_put(&newnd.path); in SYSCALL_DEFINE5()
4403 path_put(&oldnd.path); in SYSCALL_DEFINE5()