|
@@ -1724,19 +1724,6 @@ static int bpf_prog_get_info_by_fd(struct bpf_prog *prog,
|
|
goto done;
|
|
goto done;
|
|
}
|
|
}
|
|
|
|
|
|
- ulen = info.jited_prog_len;
|
|
|
|
- info.jited_prog_len = prog->jited_len;
|
|
|
|
- if (info.jited_prog_len && ulen) {
|
|
|
|
- if (bpf_dump_raw_ok()) {
|
|
|
|
- uinsns = u64_to_user_ptr(info.jited_prog_insns);
|
|
|
|
- ulen = min_t(u32, info.jited_prog_len, ulen);
|
|
|
|
- if (copy_to_user(uinsns, prog->bpf_func, ulen))
|
|
|
|
- return -EFAULT;
|
|
|
|
- } else {
|
|
|
|
- info.jited_prog_insns = 0;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
ulen = info.xlated_prog_len;
|
|
ulen = info.xlated_prog_len;
|
|
info.xlated_prog_len = bpf_prog_insn_size(prog);
|
|
info.xlated_prog_len = bpf_prog_insn_size(prog);
|
|
if (info.xlated_prog_len && ulen) {
|
|
if (info.xlated_prog_len && ulen) {
|
|
@@ -1762,6 +1749,24 @@ static int bpf_prog_get_info_by_fd(struct bpf_prog *prog,
|
|
err = bpf_prog_offload_info_fill(&info, prog);
|
|
err = bpf_prog_offload_info_fill(&info, prog);
|
|
if (err)
|
|
if (err)
|
|
return err;
|
|
return err;
|
|
|
|
+ goto done;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /* NOTE: the following code is supposed to be skipped for offload.
|
|
|
|
+ * bpf_prog_offload_info_fill() is the place to fill similar fields
|
|
|
|
+ * for offload.
|
|
|
|
+ */
|
|
|
|
+ ulen = info.jited_prog_len;
|
|
|
|
+ info.jited_prog_len = prog->jited_len;
|
|
|
|
+ if (info.jited_prog_len && ulen) {
|
|
|
|
+ if (bpf_dump_raw_ok()) {
|
|
|
|
+ uinsns = u64_to_user_ptr(info.jited_prog_insns);
|
|
|
|
+ ulen = min_t(u32, info.jited_prog_len, ulen);
|
|
|
|
+ if (copy_to_user(uinsns, prog->bpf_func, ulen))
|
|
|
|
+ return -EFAULT;
|
|
|
|
+ } else {
|
|
|
|
+ info.jited_prog_insns = 0;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
done:
|
|
done:
|