aboutsummaryrefslogtreecommitdiffstats
path: root/tools/testing/selftests/bpf/progs
diff options
context:
space:
mode:
authorAndrii Nakryiko <andriin@fb.com>2019-11-06 12:15:00 -0800
committerAlexei Starovoitov <ast@kernel.org>2019-11-06 13:54:59 -0800
commited578021210e14f15a654c825fba6a700c9a39a7 (patch)
tree0c47815ef3f5ba07f5e0e1262b9a6127fed70bca /tools/testing/selftests/bpf/progs
parentselftests/bps: Clean up removed ints relocations negative tests (diff)
downloadlinux-dev-ed578021210e14f15a654c825fba6a700c9a39a7.tar.xz
linux-dev-ed578021210e14f15a654c825fba6a700c9a39a7.zip
libbpf: Simplify BPF_CORE_READ_BITFIELD_PROBED usage
Streamline BPF_CORE_READ_BITFIELD_PROBED interface to follow BPF_CORE_READ_BITFIELD (direct) and BPF_CORE_READ, in general, i.e., just return read result or 0, if underlying bpf_probe_read() failed. In practice, real applications rarely check bpf_probe_read() result, because it has to always work or otherwise it's a bug. So propagating internal bpf_probe_read() error from this macro hurts usability without providing real benefits in practice. This patch fixes the issue and simplifies usage, noticeable even in selftest itself. Signed-off-by: Andrii Nakryiko <andriin@fb.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Acked-by: Yonghong Song <yhs@fb.com> Link: https://lore.kernel.org/bpf/20191106201500.2582438-1-andriin@fb.com
Diffstat (limited to 'tools/testing/selftests/bpf/progs')
-rw-r--r--tools/testing/selftests/bpf/progs/test_core_reloc_bitfields_probed.c19
1 files changed, 7 insertions, 12 deletions
diff --git a/tools/testing/selftests/bpf/progs/test_core_reloc_bitfields_probed.c b/tools/testing/selftests/bpf/progs/test_core_reloc_bitfields_probed.c
index a381f8ac2419..e466e3ab7de4 100644
--- a/tools/testing/selftests/bpf/progs/test_core_reloc_bitfields_probed.c
+++ b/tools/testing/selftests/bpf/progs/test_core_reloc_bitfields_probed.c
@@ -37,11 +37,6 @@ struct core_reloc_bitfields_output {
int64_t s32;
};
-#define TRANSFER_BITFIELD(in, out, field) \
- if (BPF_CORE_READ_BITFIELD_PROBED(in, field, &res)) \
- return 1; \
- out->field = res
-
SEC("raw_tracepoint/sys_enter")
int test_core_bitfields(void *ctx)
{
@@ -49,13 +44,13 @@ int test_core_bitfields(void *ctx)
struct core_reloc_bitfields_output *out = (void *)&data.out;
uint64_t res;
- TRANSFER_BITFIELD(in, out, ub1);
- TRANSFER_BITFIELD(in, out, ub2);
- TRANSFER_BITFIELD(in, out, ub7);
- TRANSFER_BITFIELD(in, out, sb4);
- TRANSFER_BITFIELD(in, out, sb20);
- TRANSFER_BITFIELD(in, out, u32);
- TRANSFER_BITFIELD(in, out, s32);
+ out->ub1 = BPF_CORE_READ_BITFIELD_PROBED(in, ub1);
+ out->ub2 = BPF_CORE_READ_BITFIELD_PROBED(in, ub2);
+ out->ub7 = BPF_CORE_READ_BITFIELD_PROBED(in, ub7);
+ out->sb4 = BPF_CORE_READ_BITFIELD_PROBED(in, sb4);
+ out->sb20 = BPF_CORE_READ_BITFIELD_PROBED(in, sb20);
+ out->u32 = BPF_CORE_READ_BITFIELD_PROBED(in, u32);
+ out->s32 = BPF_CORE_READ_BITFIELD_PROBED(in, s32);
return 0;
}