Commit 9e794163 authored by Martin KaFai Lau's avatar Martin KaFai Lau Committed by Daniel Borkmann

bpf: Remove bpf_dump_raw_ok() check for func_info and line_info

The func_info and line_info have the bpf insn offset but
they do not contain kernel address.  They will still be useful
for the userspace tool to annotate the xlated insn.

This patch removes the bpf_dump_raw_ok() guard for the
func_info and line_info during bpf_prog_get_info_by_fd().

The guard stays for jited_line_info which contains the kernel
address.

Although this bpf_dump_raw_ok() guard behavior has started since
the earlier func_info patch series, I marked the Fixes tag to the
latest line_info patch series which contains both func_info and
line_info and this patch is fixing for both of them.

Fixes: c454a46b ("bpf: Add bpf_line_info support")
Signed-off-by: default avatarMartin KaFai Lau <kafai@fb.com>
Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
parent 00842be5
...@@ -2272,33 +2272,25 @@ static int bpf_prog_get_info_by_fd(struct bpf_prog *prog, ...@@ -2272,33 +2272,25 @@ static int bpf_prog_get_info_by_fd(struct bpf_prog *prog,
ulen = info.nr_func_info; ulen = info.nr_func_info;
info.nr_func_info = prog->aux->func_info_cnt; info.nr_func_info = prog->aux->func_info_cnt;
if (info.nr_func_info && ulen) { if (info.nr_func_info && ulen) {
if (bpf_dump_raw_ok()) { char __user *user_finfo;
char __user *user_finfo;
user_finfo = u64_to_user_ptr(info.func_info); user_finfo = u64_to_user_ptr(info.func_info);
ulen = min_t(u32, info.nr_func_info, ulen); ulen = min_t(u32, info.nr_func_info, ulen);
if (copy_to_user(user_finfo, prog->aux->func_info, if (copy_to_user(user_finfo, prog->aux->func_info,
info.func_info_rec_size * ulen)) info.func_info_rec_size * ulen))
return -EFAULT; return -EFAULT;
} else {
info.func_info = 0;
}
} }
ulen = info.nr_line_info; ulen = info.nr_line_info;
info.nr_line_info = prog->aux->nr_linfo; info.nr_line_info = prog->aux->nr_linfo;
if (info.nr_line_info && ulen) { if (info.nr_line_info && ulen) {
if (bpf_dump_raw_ok()) { __u8 __user *user_linfo;
__u8 __user *user_linfo;
user_linfo = u64_to_user_ptr(info.line_info); user_linfo = u64_to_user_ptr(info.line_info);
ulen = min_t(u32, info.nr_line_info, ulen); ulen = min_t(u32, info.nr_line_info, ulen);
if (copy_to_user(user_linfo, prog->aux->linfo, if (copy_to_user(user_linfo, prog->aux->linfo,
info.line_info_rec_size * ulen)) info.line_info_rec_size * ulen))
return -EFAULT; return -EFAULT;
} else {
info.line_info = 0;
}
} }
ulen = info.nr_jited_line_info; ulen = info.nr_jited_line_info;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment