Lines Matching refs:dir

1451 static struct dentry *lookup_dcache(struct qstr *name, struct dentry *dir,  in lookup_dcache()  argument
1458 dentry = d_lookup(dir, name); in lookup_dcache()
1476 dentry = d_alloc(dir, name); in lookup_dcache()
1491 static struct dentry *lookup_real(struct inode *dir, struct dentry *dentry, in lookup_real() argument
1497 if (unlikely(IS_DEADDIR(dir))) { in lookup_real()
1502 old = dir->i_op->lookup(dir, dentry, flags); in lookup_real()
2387 struct dentry *dir = nd->path.dentry; in mountpoint_last() local
2405 mutex_lock(&dir->d_inode->i_mutex); in mountpoint_last()
2406 dentry = d_lookup(dir, &nd->last); in mountpoint_last()
2413 dentry = d_alloc(dir, &nd->last); in mountpoint_last()
2415 mutex_unlock(&dir->d_inode->i_mutex); in mountpoint_last()
2418 dentry = lookup_real(dir->d_inode, dentry, nd->flags); in mountpoint_last()
2420 mutex_unlock(&dir->d_inode->i_mutex); in mountpoint_last()
2424 mutex_unlock(&dir->d_inode->i_mutex); in mountpoint_last()
2522 int __check_sticky(struct inode *dir, struct inode *inode) in __check_sticky() argument
2528 if (uid_eq(dir->i_uid, fsuid)) in __check_sticky()
2553 static int may_delete(struct inode *dir, struct dentry *victim, bool isdir) in may_delete() argument
2562 BUG_ON(victim->d_parent->d_inode != dir); in may_delete()
2563 audit_inode_child(dir, victim, AUDIT_TYPE_CHILD_DELETE); in may_delete()
2565 error = inode_permission(dir, MAY_WRITE | MAY_EXEC); in may_delete()
2568 if (IS_APPEND(dir)) in may_delete()
2571 if (check_sticky(dir, inode) || IS_APPEND(inode) || in may_delete()
2581 if (IS_DEADDIR(dir)) in may_delete()
2596 static inline int may_create(struct inode *dir, struct dentry *child) in may_create() argument
2598 audit_inode_child(dir, child, AUDIT_TYPE_CHILD_CREATE); in may_create()
2601 if (IS_DEADDIR(dir)) in may_create()
2603 return inode_permission(dir, MAY_WRITE | MAY_EXEC); in may_create()
2650 int vfs_create(struct inode *dir, struct dentry *dentry, umode_t mode, in vfs_create() argument
2653 int error = may_create(dir, dentry); in vfs_create()
2657 if (!dir->i_op->create) in vfs_create()
2661 error = security_inode_create(dir, dentry, mode); in vfs_create()
2664 error = dir->i_op->create(dir, dentry, mode, want_excl); in vfs_create()
2666 fsnotify_create(dir, dentry); in vfs_create()
2752 static int may_o_create(struct path *dir, struct dentry *dentry, umode_t mode) in may_o_create() argument
2754 int error = security_path_mknod(dir, dentry, mode, 0); in may_o_create()
2758 error = inode_permission(dir->dentry->d_inode, MAY_WRITE | MAY_EXEC); in may_o_create()
2762 return security_inode_create(dir->dentry->d_inode, dentry, mode); in may_o_create()
2784 struct inode *dir = nd->path.dentry->d_inode; in atomic_open() local
2796 if (unlikely(IS_DEADDIR(dir))) { in atomic_open()
2802 if ((open_flag & O_CREAT) && !IS_POSIXACL(dir)) in atomic_open()
2852 error = dir->i_op->atomic_open(dir, dentry, file, open_flag, mode, in atomic_open()
2870 fsnotify_create(dir, dentry); in atomic_open()
2893 fsnotify_create(dir, dentry); in atomic_open()
2906 dentry = lookup_real(dir, dentry, nd->flags); in atomic_open()
2943 struct dentry *dir = nd->path.dentry; in lookup_open() local
2944 struct inode *dir_inode = dir->d_inode; in lookup_open()
2950 dentry = lookup_dcache(&nd->last, dir, nd->flags, &need_lookup); in lookup_open()
2974 if (!IS_POSIXACL(dir->d_inode)) in lookup_open()
2991 error = vfs_create(dir->d_inode, dentry, mode, in lookup_open()
3013 struct dentry *dir = nd->path.dentry; in do_last() local
3046 BUG_ON(nd->inode != dir->d_inode); in do_last()
3058 audit_inode(nd->name, dir, LOOKUP_PARENT); in do_last()
3075 mutex_lock(&dir->d_inode->i_mutex); in do_last()
3077 mutex_unlock(&dir->d_inode->i_mutex); in do_last()
3223 BUG_ON(save_parent.dentry != dir); in do_last()
3226 nd->inode = dir->d_inode; in do_last()
3243 struct inode *dir; in do_tmpfile() local
3251 dir = path.dentry->d_inode; in do_tmpfile()
3253 error = inode_permission(dir, MAY_WRITE | MAY_EXEC); in do_tmpfile()
3256 if (!dir->i_op->tmpfile) { in do_tmpfile()
3267 error = dir->i_op->tmpfile(dir, child, op->mode); in do_tmpfile()
3487 int vfs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, dev_t dev) in vfs_mknod() argument
3489 int error = may_create(dir, dentry); in vfs_mknod()
3497 if (!dir->i_op->mknod) in vfs_mknod()
3504 error = security_inode_mknod(dir, dentry, mode, dev); in vfs_mknod()
3508 error = dir->i_op->mknod(dir, dentry, mode, dev); in vfs_mknod()
3510 fsnotify_create(dir, dentry); in vfs_mknod()
3579 int vfs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) in vfs_mkdir() argument
3581 int error = may_create(dir, dentry); in vfs_mkdir()
3582 unsigned max_links = dir->i_sb->s_max_links; in vfs_mkdir()
3587 if (!dir->i_op->mkdir) in vfs_mkdir()
3591 error = security_inode_mkdir(dir, dentry, mode); in vfs_mkdir()
3595 if (max_links && dir->i_nlink >= max_links) in vfs_mkdir()
3598 error = dir->i_op->mkdir(dir, dentry, mode); in vfs_mkdir()
3600 fsnotify_mkdir(dir, dentry); in vfs_mkdir()
3660 int vfs_rmdir(struct inode *dir, struct dentry *dentry) in vfs_rmdir() argument
3662 int error = may_delete(dir, dentry, 1); in vfs_rmdir()
3667 if (!dir->i_op->rmdir) in vfs_rmdir()
3677 error = security_inode_rmdir(dir, dentry); in vfs_rmdir()
3682 error = dir->i_op->rmdir(dir, dentry); in vfs_rmdir()
3781 int vfs_unlink(struct inode *dir, struct dentry *dentry, struct inode **delegated_inode) in vfs_unlink() argument
3784 int error = may_delete(dir, dentry, 0); in vfs_unlink()
3789 if (!dir->i_op->unlink) in vfs_unlink()
3796 error = security_inode_unlink(dir, dentry); in vfs_unlink()
3801 error = dir->i_op->unlink(dir, dentry); in vfs_unlink()
3916 int vfs_symlink(struct inode *dir, struct dentry *dentry, const char *oldname) in vfs_symlink() argument
3918 int error = may_create(dir, dentry); in vfs_symlink()
3923 if (!dir->i_op->symlink) in vfs_symlink()
3926 error = security_inode_symlink(dir, dentry, oldname); in vfs_symlink()
3930 error = dir->i_op->symlink(dir, dentry, oldname); in vfs_symlink()
3932 fsnotify_create(dir, dentry); in vfs_symlink()
3992 int vfs_link(struct dentry *old_dentry, struct inode *dir, struct dentry *new_dentry, struct inode … in vfs_link() argument
3995 unsigned max_links = dir->i_sb->s_max_links; in vfs_link()
4001 error = may_create(dir, new_dentry); in vfs_link()
4005 if (dir->i_sb != inode->i_sb) in vfs_link()
4013 if (!dir->i_op->link) in vfs_link()
4018 error = security_inode_link(old_dentry, dir, new_dentry); in vfs_link()
4031 error = dir->i_op->link(old_dentry, dir, new_dentry); in vfs_link()
4041 fsnotify_link(dir, inode, new_dentry); in vfs_link()
4466 int vfs_whiteout(struct inode *dir, struct dentry *dentry) in vfs_whiteout() argument
4468 int error = may_create(dir, dentry); in vfs_whiteout()
4472 if (!dir->i_op->mknod) in vfs_whiteout()
4475 return dir->i_op->mknod(dir, dentry, in vfs_whiteout()