Lines Matching defs:dir
1500 struct dentry *dir,
1503 struct dentry *dentry = d_lookup(dir, name);
1528 struct inode *dir = base->d_inode;
1534 if (unlikely(IS_DEADDIR(dir)))
1541 old = dir->i_op->lookup(dir, dentry, flags);
1614 struct dentry *dir,
1618 struct inode *inode = dir->d_inode;
1625 dentry = d_alloc_parallel(dir, name, &wq);
1651 struct dentry *dir,
1654 struct inode *inode = dir->d_inode;
1657 res = __lookup_slow(name, dir, flags);
2745 int __check_sticky(struct inode *dir, struct inode *inode)
2751 if (uid_eq(dir->i_uid, fsuid))
2758 * Check whether we can remove a link victim from directory dir, check
2760 * 1. We can't do it if dir is read-only (done in permission())
2761 * 2. We should have write and exec permissions on dir
2762 * 3. We can't remove anything from append-only dir
2763 * 4. We can't do anything with immutable dir (done in permission())
2764 * 5. If the sticky bit on dir is set we should either
2765 * a. be owner of dir, or
2777 static int may_delete(struct inode *dir, struct dentry *victim, bool isdir)
2786 BUG_ON(victim->d_parent->d_inode != dir);
2792 audit_inode_child(dir, victim, AUDIT_TYPE_CHILD_DELETE);
2794 error = inode_permission(dir, MAY_WRITE | MAY_EXEC);
2797 if (IS_APPEND(dir))
2800 if (check_sticky(dir, inode) || IS_APPEND(inode) ||
2810 if (IS_DEADDIR(dir))
2818 * dir.
2821 * 2. We can't do it if dir is read-only (done in permission())
2823 * 4. We should have write and exec permissions on dir
2824 * 5. We can't do it if dir is immutable (done in permission())
2826 static inline int may_create(struct inode *dir, struct dentry *child)
2829 audit_inode_child(dir, child, AUDIT_TYPE_CHILD_CREATE);
2832 if (IS_DEADDIR(dir))
2834 s_user_ns = dir->i_sb->s_user_ns;
2838 return inode_permission(dir, MAY_WRITE | MAY_EXEC);
2885 int vfs_create(struct inode *dir, struct dentry *dentry, umode_t mode,
2888 int error = may_create(dir, dentry);
2892 if (!dir->i_op->create)
2896 error = security_inode_create(dir, dentry, mode);
2899 error = dir->i_op->create(dir, dentry, mode, want_excl);
2901 fsnotify_create(dir, dentry);
2910 struct inode *dir = dentry->d_parent->d_inode;
2911 int error = may_create(dir, dentry);
2917 error = security_inode_create(dir, dentry, mode);
2922 fsnotify_create(dir, dentry);
3018 static int may_o_create(const struct path *dir, struct dentry *dentry, umode_t mode)
3021 int error = security_path_mknod(dir, dentry, mode, 0);
3025 s_user_ns = dir->dentry->d_sb->s_user_ns;
3030 error = inode_permission(dir->dentry->d_inode, MAY_WRITE | MAY_EXEC);
3034 return security_inode_create(dir->dentry->d_inode, dentry, mode);
3055 struct inode *dir = nd->path.dentry->d_inode;
3063 error = dir->i_op->atomic_open(dir, dentry, file,
3109 struct dentry *dir = nd->path.dentry;
3110 struct inode *dir_inode = dir->d_inode;
3121 dentry = d_lookup(dir, &nd->last);
3124 dentry = d_alloc_parallel(dir, &nd->last, &wq);
3159 if (!IS_POSIXACL(dir->d_inode))
3216 struct dentry *dir = nd->path.dentry;
3249 audit_inode(nd->name, dir, AUDIT_INODE_PARENT);
3264 inode_lock(dir->d_inode);
3266 inode_lock_shared(dir->d_inode);
3269 fsnotify_create(dir->d_inode, dentry);
3271 inode_unlock(dir->d_inode);
3273 inode_unlock_shared(dir->d_inode);
3358 struct inode *dir = dentry->d_inode;
3363 error = inode_permission(dir, MAY_WRITE | MAY_EXEC);
3367 if (!dir->i_op->tmpfile)
3373 if (!IS_POSIXACL(dir))
3375 error = dir->i_op->tmpfile(dir, child, mode);
3620 int vfs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, dev_t dev)
3623 int error = may_create(dir, dentry);
3632 if (!dir->i_op->mknod)
3639 error = security_inode_mknod(dir, dentry, mode, dev);
3643 error = dir->i_op->mknod(dir, dentry, mode, dev);
3645 fsnotify_create(dir, dentry);
3722 int vfs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
3724 int error = may_create(dir, dentry);
3725 unsigned max_links = dir->i_sb->s_max_links;
3730 if (!dir->i_op->mkdir)
3734 error = security_inode_mkdir(dir, dentry, mode);
3738 if (max_links && dir->i_nlink >= max_links)
3741 error = dir->i_op->mkdir(dir, dentry, mode);
3743 fsnotify_mkdir(dir, dentry);
3783 int vfs_rmdir(struct inode *dir, struct dentry *dentry)
3785 int error = may_delete(dir, dentry, 1);
3790 if (!dir->i_op->rmdir)
3800 error = security_inode_rmdir(dir, dentry);
3804 error = dir->i_op->rmdir(dir, dentry);
3817 d_delete_notify(dir, dentry);
3887 * @dir: parent directory
3891 * The caller must hold dir->i_mutex.
3897 * dir->i_mutex before doing so.
3903 int vfs_unlink(struct inode *dir, struct dentry *dentry, struct inode **delegated_inode)
3906 int error = may_delete(dir, dentry, 0);
3911 if (!dir->i_op->unlink)
3918 error = security_inode_unlink(dir, dentry);
3923 error = dir->i_op->unlink(dir, dentry);
3935 fsnotify_unlink(dir, dentry);
3938 d_delete_notify(dir, dentry);
4037 int vfs_symlink(struct inode *dir, struct dentry *dentry, const char *oldname)
4039 int error = may_create(dir, dentry);
4044 if (!dir->i_op->symlink)
4047 error = security_inode_symlink(dir, dentry, oldname);
4051 error = dir->i_op->symlink(dir, dentry, oldname);
4053 fsnotify_create(dir, dentry);
4103 * @dir: new parent
4107 * The caller must hold dir->i_mutex
4119 int vfs_link(struct dentry *old_dentry, struct inode *dir, struct dentry *new_dentry, struct inode **delegated_inode)
4122 unsigned max_links = dir->i_sb->s_max_links;
4128 error = may_create(dir, new_dentry);
4132 if (dir->i_sb != inode->i_sb)
4147 if (!dir->i_op->link)
4152 error = security_inode_link(old_dentry, dir, new_dentry);
4165 error = dir->i_op->link(old_dentry, dir, new_dentry);
4175 fsnotify_link(dir, inode, new_dentry);