diff options
Diffstat (limited to 'kernel/bpf/syscall.c')
-rw-r--r-- | kernel/bpf/syscall.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c index b0de49598341..ae141e745f92 100644 --- a/kernel/bpf/syscall.c +++ b/kernel/bpf/syscall.c | |||
@@ -1789,12 +1789,16 @@ static int bpf_raw_tracepoint_open(const union bpf_attr *attr) | |||
1789 | } | 1789 | } |
1790 | raw_tp->btp = btp; | 1790 | raw_tp->btp = btp; |
1791 | 1791 | ||
1792 | prog = bpf_prog_get_type(attr->raw_tracepoint.prog_fd, | 1792 | prog = bpf_prog_get(attr->raw_tracepoint.prog_fd); |
1793 | BPF_PROG_TYPE_RAW_TRACEPOINT); | ||
1794 | if (IS_ERR(prog)) { | 1793 | if (IS_ERR(prog)) { |
1795 | err = PTR_ERR(prog); | 1794 | err = PTR_ERR(prog); |
1796 | goto out_free_tp; | 1795 | goto out_free_tp; |
1797 | } | 1796 | } |
1797 | if (prog->type != BPF_PROG_TYPE_RAW_TRACEPOINT && | ||
1798 | prog->type != BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE) { | ||
1799 | err = -EINVAL; | ||
1800 | goto out_put_prog; | ||
1801 | } | ||
1798 | 1802 | ||
1799 | err = bpf_probe_register(raw_tp->btp, prog); | 1803 | err = bpf_probe_register(raw_tp->btp, prog); |
1800 | if (err) | 1804 | if (err) |