diff options
author | Ilya Leoshkevich <iii@linux.ibm.com> | 2020-09-15 13:55:19 +0200 |
---|---|---|
committer | Daniel Borkmann <daniel@iogearbox.net> | 2020-09-19 01:02:55 +0200 |
commit | f55f4c349a03d820c27145bdf457013b42e4b487 (patch) | |
tree | 266e28034715da63b6ce6c1b368042c9eea275bf /samples/bpf | |
parent | selftests/bpf: Fix endianness issue in test_sockopt_sk (diff) | |
download | linux-f55f4c349a03d820c27145bdf457013b42e4b487.tar.xz linux-f55f4c349a03d820c27145bdf457013b42e4b487.zip |
samples/bpf: Fix test_map_in_map on s390
s390 uses socketcall multiplexer instead of individual socket syscalls.
Therefore, "kprobe/" SYSCALL(sys_connect) does not trigger and
test_map_in_map fails. Fix by using "kprobe/__sys_connect" instead.
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Andrii Nakryiko <andriin@fb.com>
Link: https://lore.kernel.org/bpf/20200915115519.3769807-1-iii@linux.ibm.com
Diffstat (limited to 'samples/bpf')
-rw-r--r-- | samples/bpf/test_map_in_map_kern.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/samples/bpf/test_map_in_map_kern.c b/samples/bpf/test_map_in_map_kern.c index 8def45c5b697..b0200c8eac09 100644 --- a/samples/bpf/test_map_in_map_kern.c +++ b/samples/bpf/test_map_in_map_kern.c @@ -103,10 +103,9 @@ static __always_inline int do_inline_hash_lookup(void *inner_map, u32 port) return result ? *result : -ENOENT; } -SEC("kprobe/" SYSCALL(sys_connect)) +SEC("kprobe/__sys_connect") int trace_sys_connect(struct pt_regs *ctx) { - struct pt_regs *real_regs = (struct pt_regs *)PT_REGS_PARM1_CORE(ctx); struct sockaddr_in6 *in6; u16 test_case, port, dst6[8]; int addrlen, ret, inline_ret, ret_key = 0; @@ -114,8 +113,8 @@ int trace_sys_connect(struct pt_regs *ctx) void *outer_map, *inner_map; bool inline_hash = false; - in6 = (struct sockaddr_in6 *)PT_REGS_PARM2_CORE(real_regs); - addrlen = (int)PT_REGS_PARM3_CORE(real_regs); + in6 = (struct sockaddr_in6 *)PT_REGS_PARM2_CORE(ctx); + addrlen = (int)PT_REGS_PARM3_CORE(ctx); if (addrlen != sizeof(*in6)) return 0; |