diff options
Diffstat (limited to 'kernel/bpf/inode.c')
| -rw-r--r-- | kernel/bpf/inode.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/kernel/bpf/inode.c b/kernel/bpf/inode.c index 0b030c9126d3..fddcae801724 100644 --- a/kernel/bpf/inode.c +++ b/kernel/bpf/inode.c | |||
| @@ -21,6 +21,7 @@ | |||
| 21 | #include <linux/parser.h> | 21 | #include <linux/parser.h> |
| 22 | #include <linux/filter.h> | 22 | #include <linux/filter.h> |
| 23 | #include <linux/bpf.h> | 23 | #include <linux/bpf.h> |
| 24 | #include <linux/bpf_trace.h> | ||
| 24 | 25 | ||
| 25 | enum bpf_type { | 26 | enum bpf_type { |
| 26 | BPF_TYPE_UNSPEC = 0, | 27 | BPF_TYPE_UNSPEC = 0, |
| @@ -281,6 +282,13 @@ int bpf_obj_pin_user(u32 ufd, const char __user *pathname) | |||
| 281 | ret = bpf_obj_do_pin(pname, raw, type); | 282 | ret = bpf_obj_do_pin(pname, raw, type); |
| 282 | if (ret != 0) | 283 | if (ret != 0) |
| 283 | bpf_any_put(raw, type); | 284 | bpf_any_put(raw, type); |
| 285 | if ((trace_bpf_obj_pin_prog_enabled() || | ||
| 286 | trace_bpf_obj_pin_map_enabled()) && !ret) { | ||
| 287 | if (type == BPF_TYPE_PROG) | ||
| 288 | trace_bpf_obj_pin_prog(raw, ufd, pname); | ||
| 289 | if (type == BPF_TYPE_MAP) | ||
| 290 | trace_bpf_obj_pin_map(raw, ufd, pname); | ||
| 291 | } | ||
| 284 | out: | 292 | out: |
| 285 | putname(pname); | 293 | putname(pname); |
| 286 | return ret; | 294 | return ret; |
| @@ -342,8 +350,15 @@ int bpf_obj_get_user(const char __user *pathname) | |||
| 342 | else | 350 | else |
| 343 | goto out; | 351 | goto out; |
| 344 | 352 | ||
| 345 | if (ret < 0) | 353 | if (ret < 0) { |
| 346 | bpf_any_put(raw, type); | 354 | bpf_any_put(raw, type); |
| 355 | } else if (trace_bpf_obj_get_prog_enabled() || | ||
| 356 | trace_bpf_obj_get_map_enabled()) { | ||
| 357 | if (type == BPF_TYPE_PROG) | ||
| 358 | trace_bpf_obj_get_prog(raw, ret, pname); | ||
| 359 | if (type == BPF_TYPE_MAP) | ||
| 360 | trace_bpf_obj_get_map(raw, ret, pname); | ||
| 361 | } | ||
| 347 | out: | 362 | out: |
| 348 | putname(pname); | 363 | putname(pname); |
| 349 | return ret; | 364 | return ret; |
