aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/kernel/bpf/inode.c
diff options
context:
space:
mode:
authorYonghong Song <yhs@fb.com>2020-05-09 10:59:06 -0700
committerAlexei Starovoitov <ast@kernel.org>2020-05-09 17:05:26 -0700
commit367ec3e4834cbd611401c2c40a23c22c825474f1 (patch)
tree168079defa34ecb2b4860c765de8639bc001c222 /kernel/bpf/inode.c
parentbpf: Create anonymous bpf iterator (diff)
downloadwireguard-linux-367ec3e4834cbd611401c2c40a23c22c825474f1.tar.xz
wireguard-linux-367ec3e4834cbd611401c2c40a23c22c825474f1.zip
bpf: Create file bpf iterator
To produce a file bpf iterator, the fd must be corresponding to a link_fd assocciated with a trace/iter program. When the pinned file is opened, a seq_file will be generated. Signed-off-by: Yonghong Song <yhs@fb.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Acked-by: Andrii Nakryiko <andriin@fb.com> Link: https://lore.kernel.org/bpf/20200509175906.2475893-1-yhs@fb.com
Diffstat (limited to 'kernel/bpf/inode.c')
-rw-r--r--kernel/bpf/inode.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/kernel/bpf/inode.c b/kernel/bpf/inode.c
index 95087d9f4ed3..fb878ba3f22f 100644
--- a/kernel/bpf/inode.c
+++ b/kernel/bpf/inode.c
@@ -358,8 +358,11 @@ static int bpf_mkmap(struct dentry *dentry, umode_t mode, void *arg)
static int bpf_mklink(struct dentry *dentry, umode_t mode, void *arg)
{
+ struct bpf_link *link = arg;
+
return bpf_mkobj_ops(dentry, mode, arg, &bpf_link_iops,
- &bpffs_obj_fops);
+ bpf_link_is_iter(link) ?
+ &bpf_iter_fops : &bpffs_obj_fops);
}
static struct dentry *