Lines Matching refs:inode

102 struct inode *bpf_get_inode(struct super_block *sb,
103 const struct inode *dir,
106 struct inode *inode;
117 inode = new_inode(sb);
118 if (!inode)
121 inode->i_ino = get_next_ino();
122 simple_inode_init_ts(inode);
124 inode_init_owner(&nop_mnt_idmap, inode, dir, mode);
126 return inode;
129 static int bpf_inode_type(const struct inode *inode, enum bpf_type *type)
132 if (inode->i_op == &bpf_prog_iops)
134 else if (inode->i_op == &bpf_map_iops)
136 else if (inode->i_op == &bpf_link_iops)
144 static void bpf_dentry_finalize(struct dentry *dentry, struct inode *inode,
145 struct inode *dir)
147 d_instantiate(dentry, inode);
153 static int bpf_mkdir(struct mnt_idmap *idmap, struct inode *dir,
156 struct inode *inode;
158 inode = bpf_get_inode(dir->i_sb, dir, mode | S_IFDIR);
159 if (IS_ERR(inode))
160 return PTR_ERR(inode);
162 inode->i_op = &bpf_dir_iops;
163 inode->i_fop = &simple_dir_operations;
165 inc_nlink(inode);
168 bpf_dentry_finalize(dentry, inode, dir);
272 static int bpffs_map_open(struct inode *inode, struct file *file)
274 struct bpf_map *map = inode->i_private;
295 static int bpffs_map_release(struct inode *inode, struct file *file)
301 return seq_release(inode, file);
320 static int bpffs_obj_open(struct inode *inode, struct file *file)
333 struct inode *dir = dentry->d_parent->d_inode;
334 struct inode *inode = bpf_get_inode(dir->i_sb, dir, mode);
335 if (IS_ERR(inode))
336 return PTR_ERR(inode);
338 inode->i_op = iops;
339 inode->i_fop = fops;
340 inode->i_private = raw;
342 bpf_dentry_finalize(dentry, inode, dir);
371 bpf_lookup(struct inode *dir, struct dentry *dentry, unsigned flags)
383 static int bpf_symlink(struct mnt_idmap *idmap, struct inode *dir,
387 struct inode *inode;
392 inode = bpf_get_inode(dir->i_sb, dir, S_IRWXUGO | S_IFLNK);
393 if (IS_ERR(inode)) {
395 return PTR_ERR(inode);
398 inode->i_op = &simple_symlink_inode_operations;
399 inode->i_link = link;
401 bpf_dentry_finalize(dentry, inode, dir);
440 struct inode *dir;
498 struct inode *inode;
507 inode = d_backing_inode(path.dentry);
512 ret = bpf_inode_type(inode, type);
516 raw = bpf_any_get(inode->i_private, *type);
556 static struct bpf_prog *__get_prog_inode(struct inode *inode, enum bpf_prog_type type)
559 int ret = inode_permission(&nop_mnt_idmap, inode, MAY_READ);
563 if (inode->i_op == &bpf_map_iops)
565 if (inode->i_op == &bpf_link_iops)
567 if (inode->i_op != &bpf_prog_iops)
570 prog = inode->i_private;
733 struct inode *inode = d_inode(root);
734 umode_t mode = inode->i_mode & S_IALLUGO & ~S_ISVTX;
738 if (!uid_eq(inode->i_uid, GLOBAL_ROOT_UID))
740 from_kuid_munged(&init_user_ns, inode->i_uid));
741 if (!gid_eq(inode->i_gid, GLOBAL_ROOT_GID))
743 from_kgid_munged(&init_user_ns, inode->i_gid));
778 static void bpf_free_inode(struct inode *inode)
782 if (S_ISLNK(inode->i_mode))
783 kfree(inode->i_link);
784 if (!bpf_inode_type(inode, &type))
785 bpf_any_put(inode->i_private, type);
786 free_inode_nonrcu(inode);
1013 struct inode *inode;
1026 inode = sb->s_root->d_inode;
1027 inode->i_uid = opts->uid;
1028 inode->i_gid = opts->gid;
1029 inode->i_op = &bpf_dir_iops;
1030 inode->i_mode &= ~S_IALLUGO;
1032 inode->i_mode |= S_ISVTX | opts->mode;