aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/bpf/syscall.c
diff options
context:
space:
mode:
authorMartin KaFai Lau <kafai@fb.com>2018-04-18 18:56:02 -0400
committerDaniel Borkmann <daniel@iogearbox.net>2018-04-19 15:46:25 -0400
commit60197cfb6e11ffc03aa0ed23765b2f7e70b2e2d4 (patch)
treece07ea8aa1bcf4a3c989d8a974a4413a97308c80 /kernel/bpf/syscall.c
parentf56a653c1fd13a197076dec4461c656fd2adec73 (diff)
bpf: btf: Add BPF_OBJ_GET_INFO_BY_FD support to BTF fd
This patch adds BPF_OBJ_GET_INFO_BY_FD support to BTF fd. The original BTF data, which was used to create the BTF fd during the earlier BPF_BTF_LOAD call, will be returned. The userspace is expected to allocate buffer to info.info and the buffer size is set to info.info_len before calling BPF_OBJ_GET_INFO_BY_FD. The original BTF data is copied to the userspace buffer (info.info). Only upto the user's specified info.info_len will be copied. The original BTF data size is set to info.info_len. The userspace needs to check if it is bigger than its allocated buffer size. If it is, the userspace should realloc with the kernel-returned info.info_len and call the BPF_OBJ_GET_INFO_BY_FD again. Signed-off-by: Martin KaFai Lau <kafai@fb.com> Acked-by: Alexei Starovoitov <ast@fb.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Diffstat (limited to 'kernel/bpf/syscall.c')
-rw-r--r--kernel/bpf/syscall.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c
index cd8ebadc66eb..0a4924a0a8da 100644
--- a/kernel/bpf/syscall.c
+++ b/kernel/bpf/syscall.c
@@ -2017,6 +2017,8 @@ static int bpf_obj_get_info_by_fd(const union bpf_attr *attr,
2017 else if (f.file->f_op == &bpf_map_fops) 2017 else if (f.file->f_op == &bpf_map_fops)
2018 err = bpf_map_get_info_by_fd(f.file->private_data, attr, 2018 err = bpf_map_get_info_by_fd(f.file->private_data, attr,
2019 uattr); 2019 uattr);
2020 else if (f.file->f_op == &btf_fops)
2021 err = btf_get_info_by_fd(f.file->private_data, attr, uattr);
2020 else 2022 else
2021 err = -EINVAL; 2023 err = -EINVAL;
2022 2024