diff options
Diffstat (limited to 'kernel/bpf/syscall.c')
-rw-r--r-- | kernel/bpf/syscall.c | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c index c691b9e972e3..c28524483bf4 100644 --- a/kernel/bpf/syscall.c +++ b/kernel/bpf/syscall.c | |||
@@ -1724,19 +1724,6 @@ static int bpf_prog_get_info_by_fd(struct bpf_prog *prog, | |||
1724 | goto done; | 1724 | goto done; |
1725 | } | 1725 | } |
1726 | 1726 | ||
1727 | ulen = info.jited_prog_len; | ||
1728 | info.jited_prog_len = prog->jited_len; | ||
1729 | if (info.jited_prog_len && ulen) { | ||
1730 | if (bpf_dump_raw_ok()) { | ||
1731 | uinsns = u64_to_user_ptr(info.jited_prog_insns); | ||
1732 | ulen = min_t(u32, info.jited_prog_len, ulen); | ||
1733 | if (copy_to_user(uinsns, prog->bpf_func, ulen)) | ||
1734 | return -EFAULT; | ||
1735 | } else { | ||
1736 | info.jited_prog_insns = 0; | ||
1737 | } | ||
1738 | } | ||
1739 | |||
1740 | ulen = info.xlated_prog_len; | 1727 | ulen = info.xlated_prog_len; |
1741 | info.xlated_prog_len = bpf_prog_insn_size(prog); | 1728 | info.xlated_prog_len = bpf_prog_insn_size(prog); |
1742 | if (info.xlated_prog_len && ulen) { | 1729 | if (info.xlated_prog_len && ulen) { |
@@ -1762,6 +1749,24 @@ static int bpf_prog_get_info_by_fd(struct bpf_prog *prog, | |||
1762 | err = bpf_prog_offload_info_fill(&info, prog); | 1749 | err = bpf_prog_offload_info_fill(&info, prog); |
1763 | if (err) | 1750 | if (err) |
1764 | return err; | 1751 | return err; |
1752 | goto done; | ||
1753 | } | ||
1754 | |||
1755 | /* NOTE: the following code is supposed to be skipped for offload. | ||
1756 | * bpf_prog_offload_info_fill() is the place to fill similar fields | ||
1757 | * for offload. | ||
1758 | */ | ||
1759 | ulen = info.jited_prog_len; | ||
1760 | info.jited_prog_len = prog->jited_len; | ||
1761 | if (info.jited_prog_len && ulen) { | ||
1762 | if (bpf_dump_raw_ok()) { | ||
1763 | uinsns = u64_to_user_ptr(info.jited_prog_insns); | ||
1764 | ulen = min_t(u32, info.jited_prog_len, ulen); | ||
1765 | if (copy_to_user(uinsns, prog->bpf_func, ulen)) | ||
1766 | return -EFAULT; | ||
1767 | } else { | ||
1768 | info.jited_prog_insns = 0; | ||
1769 | } | ||
1765 | } | 1770 | } |
1766 | 1771 | ||
1767 | done: | 1772 | done: |