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
This commit is contained in:
parent
fec47bbc10
commit
f55f4c349a
|
@ -103,10 +103,9 @@ static __always_inline int do_inline_hash_lookup(void *inner_map, u32 port)
|
||||||
return result ? *result : -ENOENT;
|
return result ? *result : -ENOENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
SEC("kprobe/" SYSCALL(sys_connect))
|
SEC("kprobe/__sys_connect")
|
||||||
int trace_sys_connect(struct pt_regs *ctx)
|
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;
|
struct sockaddr_in6 *in6;
|
||||||
u16 test_case, port, dst6[8];
|
u16 test_case, port, dst6[8];
|
||||||
int addrlen, ret, inline_ret, ret_key = 0;
|
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;
|
void *outer_map, *inner_map;
|
||||||
bool inline_hash = false;
|
bool inline_hash = false;
|
||||||
|
|
||||||
in6 = (struct sockaddr_in6 *)PT_REGS_PARM2_CORE(real_regs);
|
in6 = (struct sockaddr_in6 *)PT_REGS_PARM2_CORE(ctx);
|
||||||
addrlen = (int)PT_REGS_PARM3_CORE(real_regs);
|
addrlen = (int)PT_REGS_PARM3_CORE(ctx);
|
||||||
|
|
||||||
if (addrlen != sizeof(*in6))
|
if (addrlen != sizeof(*in6))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue