Lines Matching refs:dir
1500 struct dentry *dir, in lookup_dcache() argument
1503 struct dentry *dentry = d_lookup(dir, name); in lookup_dcache()
1528 struct inode *dir = base->d_inode; in __lookup_hash() local
1534 if (unlikely(IS_DEADDIR(dir))) in __lookup_hash()
1541 old = dir->i_op->lookup(dir, dentry, flags); in __lookup_hash()
1614 struct dentry *dir, in __lookup_slow() argument
1618 struct inode *inode = dir->d_inode; in __lookup_slow()
1625 dentry = d_alloc_parallel(dir, name, &wq); in __lookup_slow()
1651 struct dentry *dir, in lookup_slow() argument
1654 struct inode *inode = dir->d_inode; in lookup_slow()
1657 res = __lookup_slow(name, dir, flags); in lookup_slow()
2745 int __check_sticky(struct inode *dir, struct inode *inode) in __check_sticky() argument
2751 if (uid_eq(dir->i_uid, fsuid)) in __check_sticky()
2777 static int may_delete(struct inode *dir, struct dentry *victim, bool isdir) in may_delete() argument
2786 BUG_ON(victim->d_parent->d_inode != dir); in may_delete()
2792 audit_inode_child(dir, victim, AUDIT_TYPE_CHILD_DELETE); in may_delete()
2794 error = inode_permission(dir, MAY_WRITE | MAY_EXEC); in may_delete()
2797 if (IS_APPEND(dir)) in may_delete()
2800 if (check_sticky(dir, inode) || IS_APPEND(inode) || in may_delete()
2810 if (IS_DEADDIR(dir)) in may_delete()
2826 static inline int may_create(struct inode *dir, struct dentry *child) in may_create() argument
2829 audit_inode_child(dir, child, AUDIT_TYPE_CHILD_CREATE); in may_create()
2832 if (IS_DEADDIR(dir)) in may_create()
2834 s_user_ns = dir->i_sb->s_user_ns; in may_create()
2838 return inode_permission(dir, MAY_WRITE | MAY_EXEC); in may_create()
2885 int vfs_create(struct inode *dir, struct dentry *dentry, umode_t mode, in vfs_create() argument
2888 int error = may_create(dir, dentry); in vfs_create()
2892 if (!dir->i_op->create) in vfs_create()
2896 error = security_inode_create(dir, dentry, mode); in vfs_create()
2899 error = dir->i_op->create(dir, dentry, mode, want_excl); in vfs_create()
2901 fsnotify_create(dir, dentry); in vfs_create()
2910 struct inode *dir = dentry->d_parent->d_inode; in vfs_mkobj() local
2911 int error = may_create(dir, dentry); in vfs_mkobj()
2917 error = security_inode_create(dir, dentry, mode); in vfs_mkobj()
2922 fsnotify_create(dir, dentry); in vfs_mkobj()
3018 static int may_o_create(const struct path *dir, struct dentry *dentry, umode_t mode) in may_o_create() argument
3021 int error = security_path_mknod(dir, dentry, mode, 0); in may_o_create()
3025 s_user_ns = dir->dentry->d_sb->s_user_ns; in may_o_create()
3030 error = inode_permission(dir->dentry->d_inode, MAY_WRITE | MAY_EXEC); in may_o_create()
3034 return security_inode_create(dir->dentry->d_inode, dentry, mode); in may_o_create()
3055 struct inode *dir = nd->path.dentry->d_inode; in atomic_open() local
3063 error = dir->i_op->atomic_open(dir, dentry, file, in atomic_open()
3109 struct dentry *dir = nd->path.dentry; in lookup_open() local
3110 struct inode *dir_inode = dir->d_inode; in lookup_open()
3121 dentry = d_lookup(dir, &nd->last); in lookup_open()
3124 dentry = d_alloc_parallel(dir, &nd->last, &wq); in lookup_open()
3159 if (!IS_POSIXACL(dir->d_inode)) in lookup_open()
3216 struct dentry *dir = nd->path.dentry; in open_last_lookups() local
3249 audit_inode(nd->name, dir, AUDIT_INODE_PARENT); in open_last_lookups()
3264 inode_lock(dir->d_inode); in open_last_lookups()
3266 inode_lock_shared(dir->d_inode); in open_last_lookups()
3269 fsnotify_create(dir->d_inode, dentry); in open_last_lookups()
3271 inode_unlock(dir->d_inode); in open_last_lookups()
3273 inode_unlock_shared(dir->d_inode); in open_last_lookups()
3358 struct inode *dir = dentry->d_inode; in vfs_tmpfile() local
3363 error = inode_permission(dir, MAY_WRITE | MAY_EXEC); in vfs_tmpfile()
3367 if (!dir->i_op->tmpfile) in vfs_tmpfile()
3373 if (!IS_POSIXACL(dir)) in vfs_tmpfile()
3375 error = dir->i_op->tmpfile(dir, child, mode); in vfs_tmpfile()
3620 int vfs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, dev_t dev) in vfs_mknod() argument
3623 int error = may_create(dir, dentry); in vfs_mknod()
3632 if (!dir->i_op->mknod) in vfs_mknod()
3639 error = security_inode_mknod(dir, dentry, mode, dev); in vfs_mknod()
3643 error = dir->i_op->mknod(dir, dentry, mode, dev); in vfs_mknod()
3645 fsnotify_create(dir, dentry); in vfs_mknod()
3722 int vfs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) in vfs_mkdir() argument
3724 int error = may_create(dir, dentry); in vfs_mkdir()
3725 unsigned max_links = dir->i_sb->s_max_links; in vfs_mkdir()
3730 if (!dir->i_op->mkdir) in vfs_mkdir()
3734 error = security_inode_mkdir(dir, dentry, mode); in vfs_mkdir()
3738 if (max_links && dir->i_nlink >= max_links) in vfs_mkdir()
3741 error = dir->i_op->mkdir(dir, dentry, mode); in vfs_mkdir()
3743 fsnotify_mkdir(dir, dentry); in vfs_mkdir()
3783 int vfs_rmdir(struct inode *dir, struct dentry *dentry) in vfs_rmdir() argument
3785 int error = may_delete(dir, dentry, 1); in vfs_rmdir()
3790 if (!dir->i_op->rmdir) in vfs_rmdir()
3800 error = security_inode_rmdir(dir, dentry); in vfs_rmdir()
3804 error = dir->i_op->rmdir(dir, dentry); in vfs_rmdir()
3817 d_delete_notify(dir, dentry); in vfs_rmdir()
3903 int vfs_unlink(struct inode *dir, struct dentry *dentry, struct inode **delegated_inode) in vfs_unlink() argument
3906 int error = may_delete(dir, dentry, 0); in vfs_unlink()
3911 if (!dir->i_op->unlink) in vfs_unlink()
3918 error = security_inode_unlink(dir, dentry); in vfs_unlink()
3923 error = dir->i_op->unlink(dir, dentry); in vfs_unlink()
3935 fsnotify_unlink(dir, dentry); in vfs_unlink()
3938 d_delete_notify(dir, dentry); in vfs_unlink()
4037 int vfs_symlink(struct inode *dir, struct dentry *dentry, const char *oldname) in vfs_symlink() argument
4039 int error = may_create(dir, dentry); in vfs_symlink()
4044 if (!dir->i_op->symlink) in vfs_symlink()
4047 error = security_inode_symlink(dir, dentry, oldname); in vfs_symlink()
4051 error = dir->i_op->symlink(dir, dentry, oldname); in vfs_symlink()
4053 fsnotify_create(dir, dentry); in vfs_symlink()
4119 int vfs_link(struct dentry *old_dentry, struct inode *dir, struct dentry *new_dentry, struct inode … in vfs_link() argument
4122 unsigned max_links = dir->i_sb->s_max_links; in vfs_link()
4128 error = may_create(dir, new_dentry); in vfs_link()
4132 if (dir->i_sb != inode->i_sb) in vfs_link()
4147 if (!dir->i_op->link) in vfs_link()
4152 error = security_inode_link(old_dentry, dir, new_dentry); in vfs_link()
4165 error = dir->i_op->link(old_dentry, dir, new_dentry); in vfs_link()
4175 fsnotify_link(dir, inode, new_dentry); in vfs_link()