Lines Matching refs:path
476 static void detach_mnt(struct vfsmount *mnt, struct path *old_path) in detach_mnt()
495 static void attach_mnt(struct vfsmount *mnt, struct path *path) in attach_mnt() argument
497 mnt_set_mountpoint(path->mnt, path->dentry, mnt); in attach_mnt()
499 hash(path->mnt, path->dentry)); in attach_mnt()
500 list_add_tail(&mnt->mnt_child, &path->mnt->mnt_mounts); in attach_mnt()
806 struct path mnt_path = { .dentry = mnt->mnt_root, .mnt = mnt }; in show_vfsmnt()
837 struct path mnt_path = { .dentry = mnt->mnt_root, .mnt = mnt }; in show_mountinfo()
838 struct path root = p->root; in show_mountinfo()
896 struct path mnt_path = { .dentry = mnt->mnt_root, .mnt = mnt }; in show_vfsstat()
1135 struct path path; in SYSCALL_DEFINE2() local
1138 retval = user_path(name, &path); in SYSCALL_DEFINE2()
1142 if (path.dentry != path.mnt->mnt_root) in SYSCALL_DEFINE2()
1144 if (!check_mnt(path.mnt)) in SYSCALL_DEFINE2()
1151 retval = do_umount(path.mnt, flags); in SYSCALL_DEFINE2()
1154 dput(path.dentry); in SYSCALL_DEFINE2()
1155 mntput_no_expire(path.mnt); in SYSCALL_DEFINE2()
1172 static int mount_is_safe(struct path *path) in mount_is_safe() argument
1178 if (S_ISLNK(path->dentry->d_inode->i_mode)) in mount_is_safe()
1180 if (path->dentry->d_inode->i_mode & S_ISVTX) { in mount_is_safe()
1181 if (current_uid() != path->dentry->d_inode->i_uid) in mount_is_safe()
1184 if (inode_permission(path->dentry->d_inode, MAY_WRITE)) in mount_is_safe()
1194 struct path path; in copy_tree() local
1219 path.mnt = q; in copy_tree()
1220 path.dentry = p->mnt_mountpoint; in copy_tree()
1226 attach_mnt(q, &path); in copy_tree()
1353 struct path *path, struct path *parent_path) in attach_recursive_mnt() argument
1356 struct vfsmount *dest_mnt = path->mnt; in attach_recursive_mnt()
1357 struct dentry *dest_dentry = path->dentry; in attach_recursive_mnt()
1378 attach_mnt(source_mnt, path); in attach_recursive_mnt()
1399 static int graft_tree(struct vfsmount *mnt, struct path *path) in graft_tree() argument
1405 if (S_ISDIR(path->dentry->d_inode->i_mode) != in graft_tree()
1410 mutex_lock(&path->dentry->d_inode->i_mutex); in graft_tree()
1411 if (IS_DEADDIR(path->dentry->d_inode)) in graft_tree()
1414 err = security_sb_check_sb(mnt, path); in graft_tree()
1419 if (IS_ROOT(path->dentry) || !d_unhashed(path->dentry)) in graft_tree()
1420 err = attach_recursive_mnt(mnt, path, NULL); in graft_tree()
1422 mutex_unlock(&path->dentry->d_inode->i_mutex); in graft_tree()
1424 security_sb_post_addmount(mnt, path); in graft_tree()
1431 static int do_change_type(struct path *path, int flag) in do_change_type() argument
1433 struct vfsmount *m, *mnt = path->mnt; in do_change_type()
1441 if (path->dentry != path->mnt->mnt_root) in do_change_type()
1464 static int do_loopback(struct path *path, char *old_name, in do_loopback() argument
1467 struct path old_path; in do_loopback()
1469 int err = mount_is_safe(path); in do_loopback()
1483 if (!check_mnt(path->mnt) || !check_mnt(old_path.mnt)) in do_loopback()
1495 err = graft_tree(mnt, path); in do_loopback()
1532 static int do_remount(struct path *path, int flags, int mnt_flags, in do_remount() argument
1536 struct super_block *sb = path->mnt->mnt_sb; in do_remount()
1541 if (!check_mnt(path->mnt)) in do_remount()
1544 if (path->dentry != path->mnt->mnt_root) in do_remount()
1549 err = change_mount_flags(path->mnt, flags); in do_remount()
1553 path->mnt->mnt_flags = mnt_flags; in do_remount()
1556 security_sb_post_remount(path->mnt, flags, data); in do_remount()
1559 touch_mnt_namespace(path->mnt->mnt_ns); in do_remount()
1575 static int do_move_mount(struct path *path, char *old_name) in do_move_mount() argument
1577 struct path old_path, parent_path; in do_move_mount()
1589 while (d_mountpoint(path->dentry) && in do_move_mount()
1590 follow_down(&path->mnt, &path->dentry)) in do_move_mount()
1593 if (!check_mnt(path->mnt) || !check_mnt(old_path.mnt)) in do_move_mount()
1597 mutex_lock(&path->dentry->d_inode->i_mutex); in do_move_mount()
1598 if (IS_DEADDIR(path->dentry->d_inode)) in do_move_mount()
1601 if (!IS_ROOT(path->dentry) && d_unhashed(path->dentry)) in do_move_mount()
1611 if (S_ISDIR(path->dentry->d_inode->i_mode) != in do_move_mount()
1624 if (IS_MNT_SHARED(path->mnt) && in do_move_mount()
1628 for (p = path->mnt; p->mnt_parent != p; p = p->mnt_parent) in do_move_mount()
1632 err = attach_recursive_mnt(old_path.mnt, path, &parent_path); in do_move_mount()
1640 mutex_unlock(&path->dentry->d_inode->i_mutex); in do_move_mount()
1653 static int do_new_mount(struct path *path, char *type, int flags, in do_new_mount() argument
1669 return do_add_mount(mnt, path, mnt_flags, NULL); in do_new_mount()
1676 int do_add_mount(struct vfsmount *newmnt, struct path *path, in do_add_mount() argument
1683 while (d_mountpoint(path->dentry) && in do_add_mount()
1684 follow_down(&path->mnt, &path->dentry)) in do_add_mount()
1687 if (!check_mnt(path->mnt)) in do_add_mount()
1692 if (path->mnt->mnt_sb == newmnt->mnt_sb && in do_add_mount()
1693 path->mnt->mnt_root == path->dentry) in do_add_mount()
1701 if ((err = graft_tree(newmnt, path))) in do_add_mount()
1904 struct path path; in do_mount() local
1942 retval = kern_path(dir_name, LOOKUP_FOLLOW, &path); in do_mount()
1946 retval = security_sb_mount(dev_name, &path, in do_mount()
1952 retval = do_remount(&path, flags & ~MS_REMOUNT, mnt_flags, in do_mount()
1955 retval = do_loopback(&path, dev_name, flags & MS_REC); in do_mount()
1957 retval = do_change_type(&path, flags); in do_mount()
1959 retval = do_move_mount(&path, dev_name); in do_mount()
1961 retval = do_new_mount(&path, type_page, flags, mnt_flags, in do_mount()
1964 path_put(&path); in do_mount()
2095 void set_fs_root(struct fs_struct *fs, struct path *path) in set_fs_root() argument
2097 struct path old_root; in set_fs_root()
2101 fs->root = *path; in set_fs_root()
2102 path_get(path); in set_fs_root()
2112 void set_fs_pwd(struct fs_struct *fs, struct path *path) in set_fs_pwd() argument
2114 struct path old_pwd; in set_fs_pwd()
2118 fs->pwd = *path; in set_fs_pwd()
2119 path_get(path); in set_fs_pwd()
2126 static void chroot_fs_refs(struct path *old_root, struct path *new_root) in chroot_fs_refs()
2180 struct path new, old, parent_path, root_parent, root; in SYSCALL_DEFINE2()
2282 struct path root; in init_mount_tree()