Lines Matching defs:dir

1422 				    struct dentry *dir,
1425 struct dentry *dentry = d_lookup(dir, name);
1450 struct inode *dir = base->d_inode;
1456 if (unlikely(IS_DEADDIR(dir)))
1463 old = dir->i_op->lookup(dir, dentry, flags);
1536 struct dentry *dir,
1540 struct inode *inode = dir->d_inode;
1547 dentry = d_alloc_parallel(dir, name, &wq);
1573 struct dentry *dir,
1576 struct inode *inode = dir->d_inode;
1579 res = __lookup_slow(name, dir, flags);
2668 int __check_sticky(struct inode *dir, struct inode *inode)
2674 if (uid_eq(dir->i_uid, fsuid))
2681 * Check whether we can remove a link victim from directory dir, check
2683 * 1. We can't do it if dir is read-only (done in permission())
2684 * 2. We should have write and exec permissions on dir
2685 * 3. We can't remove anything from append-only dir
2686 * 4. We can't do anything with immutable dir (done in permission())
2687 * 5. If the sticky bit on dir is set we should either
2688 * a. be owner of dir, or
2700 static int may_delete(struct inode *dir, struct dentry *victim, bool isdir)
2709 BUG_ON(victim->d_parent->d_inode != dir);
2715 audit_inode_child(dir, victim, AUDIT_TYPE_CHILD_DELETE);
2717 error = inode_permission(dir, MAY_WRITE | MAY_EXEC);
2720 if (IS_APPEND(dir))
2723 if (check_sticky(dir, inode) || IS_APPEND(inode) ||
2733 if (IS_DEADDIR(dir))
2741 * dir.
2744 * 2. We can't do it if dir is read-only (done in permission())
2746 * 4. We should have write and exec permissions on dir
2747 * 5. We can't do it if dir is immutable (done in permission())
2749 static inline int may_create(struct inode *dir, struct dentry *child)
2752 audit_inode_child(dir, child, AUDIT_TYPE_CHILD_CREATE);
2755 if (IS_DEADDIR(dir))
2757 s_user_ns = dir->i_sb->s_user_ns;
2761 return inode_permission(dir, MAY_WRITE | MAY_EXEC);
2804 * @dir: parent directory of the new inode
2805 * @mode: mode of the new inode to be created in @dir
2814 static inline umode_t mode_strip_umask(const struct inode *dir, umode_t mode)
2816 if (!IS_POSIXACL(dir))
2823 * @dir: parent directory of the new inode
2843 static inline umode_t vfs_prepare_mode(const struct inode *dir, umode_t mode,
2846 mode = mode_strip_sgid(dir, mode);
2847 mode = mode_strip_umask(dir, mode);
2859 int vfs_create(struct inode *dir, struct dentry *dentry, umode_t mode,
2862 int error = may_create(dir, dentry);
2866 if (!dir->i_op->create)
2869 mode = vfs_prepare_mode(dir, mode, S_IALLUGO, S_IFREG);
2870 error = security_inode_create(dir, dentry, mode);
2873 error = dir->i_op->create(dir, dentry, mode, want_excl);
2875 fsnotify_create(dir, dentry);
2884 struct inode *dir = dentry->d_parent->d_inode;
2885 int error = may_create(dir, dentry);
2891 error = security_inode_create(dir, dentry, mode);
2896 fsnotify_create(dir, dentry);
2992 static int may_o_create(const struct path *dir, struct dentry *dentry, umode_t mode)
2995 int error = security_path_mknod(dir, dentry, mode, 0);
2999 s_user_ns = dir->dentry->d_sb->s_user_ns;
3004 error = inode_permission(dir->dentry->d_inode, MAY_WRITE | MAY_EXEC);
3008 return security_inode_create(dir->dentry->d_inode, dentry, mode);
3029 struct inode *dir = nd->path.dentry->d_inode;
3037 error = dir->i_op->atomic_open(dir, dentry, file,
3083 struct dentry *dir = nd->path.dentry;
3084 struct inode *dir_inode = dir->d_inode;
3095 dentry = d_lookup(dir, &nd->last);
3098 dentry = d_alloc_parallel(dir, &nd->last, &wq);
3133 mode = vfs_prepare_mode(dir->d_inode, mode, mode, mode);
3189 struct dentry *dir = nd->path.dentry;
3222 audit_inode(nd->name, dir, AUDIT_INODE_PARENT);
3237 inode_lock(dir->d_inode);
3239 inode_lock_shared(dir->d_inode);
3242 fsnotify_create(dir->d_inode, dentry);
3244 inode_unlock(dir->d_inode);
3246 inode_unlock_shared(dir->d_inode);
3331 struct inode *dir = dentry->d_inode;
3336 error = inode_permission(dir, MAY_WRITE | MAY_EXEC);
3340 if (!dir->i_op->tmpfile)
3346 mode = vfs_prepare_mode(dir, mode, mode, mode);
3347 error = dir->i_op->tmpfile(dir, child, mode);
3591 int vfs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, dev_t dev)
3594 int error = may_create(dir, dentry);
3603 if (!dir->i_op->mknod)
3606 mode = vfs_prepare_mode(dir, mode, mode, mode);
3611 error = security_inode_mknod(dir, dentry, mode, dev);
3615 error = dir->i_op->mknod(dir, dentry, mode, dev);
3617 fsnotify_create(dir, dentry);
3693 int vfs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
3695 int error = may_create(dir, dentry);
3696 unsigned max_links = dir->i_sb->s_max_links;
3701 if (!dir->i_op->mkdir)
3704 mode = vfs_prepare_mode(dir, mode, S_IRWXUGO | S_ISVTX, 0);
3705 error = security_inode_mkdir(dir, dentry, mode);
3709 if (max_links && dir->i_nlink >= max_links)
3712 error = dir->i_op->mkdir(dir, dentry, mode);
3714 fsnotify_mkdir(dir, dentry);
3753 int vfs_rmdir(struct inode *dir, struct dentry *dentry)
3755 int error = may_delete(dir, dentry, 1);
3760 if (!dir->i_op->rmdir)
3770 error = security_inode_rmdir(dir, dentry);
3774 error = dir->i_op->rmdir(dir, dentry);
3787 d_delete_notify(dir, dentry);
3857 * @dir: parent directory
3861 * The caller must hold dir->i_mutex.
3867 * dir->i_mutex before doing so.
3873 int vfs_unlink(struct inode *dir, struct dentry *dentry, struct inode **delegated_inode)
3876 int error = may_delete(dir, dentry, 0);
3881 if (!dir->i_op->unlink)
3888 error = security_inode_unlink(dir, dentry);
3893 error = dir->i_op->unlink(dir, dentry);
3905 fsnotify_unlink(dir, dentry);
3908 d_delete_notify(dir, dentry);
4007 int vfs_symlink(struct inode *dir, struct dentry *dentry, const char *oldname)
4009 int error = may_create(dir, dentry);
4014 if (!dir->i_op->symlink)
4017 error = security_inode_symlink(dir, dentry, oldname);
4021 error = dir->i_op->symlink(dir, dentry, oldname);
4023 fsnotify_create(dir, dentry);
4073 * @dir: new parent
4077 * The caller must hold dir->i_mutex
4089 int vfs_link(struct dentry *old_dentry, struct inode *dir, struct dentry *new_dentry, struct inode **delegated_inode)
4092 unsigned max_links = dir->i_sb->s_max_links;
4098 error = may_create(dir, new_dentry);
4102 if (dir->i_sb != inode->i_sb)
4117 if (!dir->i_op->link)
4122 error = security_inode_link(old_dentry, dir, new_dentry);
4135 error = dir->i_op->link(old_dentry, dir, new_dentry);
4145 fsnotify_link(dir, inode, new_dentry);