diff options
author | Josef Bacik <jbacik@fb.com> | 2017-12-11 11:36:49 -0500 |
---|---|---|
committer | Alexei Starovoitov <ast@kernel.org> | 2017-12-12 12:02:40 -0500 |
commit | 965de87e54b803223bff703ea6b2a76c056695ae (patch) | |
tree | 43f90acde38704b6831d3819ce0bffee092eade4 /tools | |
parent | 9802d86585db91655c7d1929a4f6bbe0952ea88e (diff) |
samples/bpf: add a test for bpf_override_return
This adds a basic test for bpf_override_return to verify it works. We
override the main function for mounting a btrfs fs so it'll return
-ENOMEM and then make sure that trying to mount a btrfs fs will fail.
Acked-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/include/uapi/linux/bpf.h | 7 | ||||
-rw-r--r-- | tools/testing/selftests/bpf/bpf_helpers.h | 3 |
2 files changed, 8 insertions, 2 deletions
diff --git a/tools/include/uapi/linux/bpf.h b/tools/include/uapi/linux/bpf.h index 4c223ab30293..cf446c25c0ec 100644 --- a/tools/include/uapi/linux/bpf.h +++ b/tools/include/uapi/linux/bpf.h | |||
@@ -677,6 +677,10 @@ union bpf_attr { | |||
677 | * @buf: buf to fill | 677 | * @buf: buf to fill |
678 | * @buf_size: size of the buf | 678 | * @buf_size: size of the buf |
679 | * Return : 0 on success or negative error code | 679 | * Return : 0 on success or negative error code |
680 | * | ||
681 | * int bpf_override_return(pt_regs, rc) | ||
682 | * @pt_regs: pointer to struct pt_regs | ||
683 | * @rc: the return value to set | ||
680 | */ | 684 | */ |
681 | #define __BPF_FUNC_MAPPER(FN) \ | 685 | #define __BPF_FUNC_MAPPER(FN) \ |
682 | FN(unspec), \ | 686 | FN(unspec), \ |
@@ -736,7 +740,8 @@ union bpf_attr { | |||
736 | FN(xdp_adjust_meta), \ | 740 | FN(xdp_adjust_meta), \ |
737 | FN(perf_event_read_value), \ | 741 | FN(perf_event_read_value), \ |
738 | FN(perf_prog_read_value), \ | 742 | FN(perf_prog_read_value), \ |
739 | FN(getsockopt), | 743 | FN(getsockopt), \ |
744 | FN(override_return), | ||
740 | 745 | ||
741 | /* integer value in 'imm' field of BPF_CALL instruction selects which helper | 746 | /* integer value in 'imm' field of BPF_CALL instruction selects which helper |
742 | * function eBPF program intends to call | 747 | * function eBPF program intends to call |
diff --git a/tools/testing/selftests/bpf/bpf_helpers.h b/tools/testing/selftests/bpf/bpf_helpers.h index fd9a17fa8a8b..33cb00e46c49 100644 --- a/tools/testing/selftests/bpf/bpf_helpers.h +++ b/tools/testing/selftests/bpf/bpf_helpers.h | |||
@@ -82,7 +82,8 @@ static int (*bpf_perf_event_read_value)(void *map, unsigned long long flags, | |||
82 | static int (*bpf_perf_prog_read_value)(void *ctx, void *buf, | 82 | static int (*bpf_perf_prog_read_value)(void *ctx, void *buf, |
83 | unsigned int buf_size) = | 83 | unsigned int buf_size) = |
84 | (void *) BPF_FUNC_perf_prog_read_value; | 84 | (void *) BPF_FUNC_perf_prog_read_value; |
85 | 85 | static int (*bpf_override_return)(void *ctx, unsigned long rc) = | |
86 | (void *) BPF_FUNC_override_return; | ||
86 | 87 | ||
87 | /* llvm builtin functions that eBPF C program may use to | 88 | /* llvm builtin functions that eBPF C program may use to |
88 | * emit BPF_LD_ABS and BPF_LD_IND instructions | 89 | * emit BPF_LD_ABS and BPF_LD_IND instructions |