Loading kernel/bpf/bpf_iter.c +8 −21 Original line number Diff line number Diff line Loading @@ -634,37 +634,24 @@ static int prepare_seq_file(struct file *file, struct bpf_iter_link *link) int bpf_iter_new_fd(struct bpf_link *link) { struct bpf_iter_link *iter_link; struct file *file; unsigned int flags; int err, fd; int err; if (link->ops != &bpf_iter_link_lops) return -EINVAL; flags = O_RDONLY | O_CLOEXEC; fd = get_unused_fd_flags(flags); if (fd < 0) return fd; file = anon_inode_getfile("bpf_iter", &bpf_iter_fops, NULL, flags); if (IS_ERR(file)) { err = PTR_ERR(file); goto free_fd; } FD_PREPARE(fdf, flags, anon_inode_getfile("bpf_iter", &bpf_iter_fops, NULL, flags)); if (fdf.err) return fdf.err; iter_link = container_of(link, struct bpf_iter_link, link); err = prepare_seq_file(file, iter_link); err = prepare_seq_file(fd_prepare_file(fdf), iter_link); if (err) goto free_file; return err; /* Automatic cleanup handles fput */ fd_install(fd, file); return fd; free_file: fput(file); free_fd: put_unused_fd(fd); return err; return fd_publish(fdf); } struct bpf_prog *bpf_iter_get_info(struct bpf_iter_meta *meta, bool in_stop) Loading Loading
kernel/bpf/bpf_iter.c +8 −21 Original line number Diff line number Diff line Loading @@ -634,37 +634,24 @@ static int prepare_seq_file(struct file *file, struct bpf_iter_link *link) int bpf_iter_new_fd(struct bpf_link *link) { struct bpf_iter_link *iter_link; struct file *file; unsigned int flags; int err, fd; int err; if (link->ops != &bpf_iter_link_lops) return -EINVAL; flags = O_RDONLY | O_CLOEXEC; fd = get_unused_fd_flags(flags); if (fd < 0) return fd; file = anon_inode_getfile("bpf_iter", &bpf_iter_fops, NULL, flags); if (IS_ERR(file)) { err = PTR_ERR(file); goto free_fd; } FD_PREPARE(fdf, flags, anon_inode_getfile("bpf_iter", &bpf_iter_fops, NULL, flags)); if (fdf.err) return fdf.err; iter_link = container_of(link, struct bpf_iter_link, link); err = prepare_seq_file(file, iter_link); err = prepare_seq_file(fd_prepare_file(fdf), iter_link); if (err) goto free_file; return err; /* Automatic cleanup handles fput */ fd_install(fd, file); return fd; free_file: fput(file); free_fd: put_unused_fd(fd); return err; return fd_publish(fdf); } struct bpf_prog *bpf_iter_get_info(struct bpf_iter_meta *meta, bool in_stop) Loading