On Tue, Aug 13, 2019 at 9:22 AM Ilya Leoshkevich <iii@xxxxxxxxxxxxx> wrote: > > "bind4 allow specific IP & port" and "bind6 deny specific IP & port" > fail on s390 because of endianness issue: the 4 IP address bytes are > loaded as a word and compared with a constant, but the value of this > constant should be different on big- and little- endian machines, which > is not the case right now. > > Use __constant_ntohl to generate proper value based on machine > endianness. > > Fixes: 1d436885b23b ("selftests/bpf: Selftest for sys_bind post-hooks.") > Signed-off-by: Ilya Leoshkevich <iii@xxxxxxxxxxxxx> > --- > tools/testing/selftests/bpf/test_sock.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/tools/testing/selftests/bpf/test_sock.c b/tools/testing/selftests/bpf/test_sock.c > index fb679ac3d4b0..5c092a85125f 100644 > --- a/tools/testing/selftests/bpf/test_sock.c > +++ b/tools/testing/selftests/bpf/test_sock.c > @@ -8,6 +8,7 @@ > #include <sys/types.h> > #include <sys/socket.h> > > +#include <asm/byteorder.h> Maybe use bpf_endian.h and bpf_ntohl instead, sticking to BPF stuff already used by other tests? > #include <linux/filter.h> > > #include <bpf/bpf.h> > @@ -232,7 +233,8 @@ static struct sock_test tests[] = { > /* if (ip == expected && port == expected) */ > BPF_LDX_MEM(BPF_W, BPF_REG_7, BPF_REG_6, > offsetof(struct bpf_sock, src_ip6[3])), > - BPF_JMP_IMM(BPF_JNE, BPF_REG_7, 0x01000000, 4), > + BPF_JMP_IMM(BPF_JNE, BPF_REG_7, > + __constant_ntohl(0x00000001), 4), > BPF_LDX_MEM(BPF_W, BPF_REG_7, BPF_REG_6, > offsetof(struct bpf_sock, src_port)), > BPF_JMP_IMM(BPF_JNE, BPF_REG_7, 0x2001, 2), > @@ -261,7 +263,8 @@ static struct sock_test tests[] = { > /* if (ip == expected && port == expected) */ > BPF_LDX_MEM(BPF_W, BPF_REG_7, BPF_REG_6, > offsetof(struct bpf_sock, src_ip4)), > - BPF_JMP_IMM(BPF_JNE, BPF_REG_7, 0x0100007F, 4), > + BPF_JMP_IMM(BPF_JNE, BPF_REG_7, > + __constant_ntohl(0x7F000001), 4), > BPF_LDX_MEM(BPF_W, BPF_REG_7, BPF_REG_6, > offsetof(struct bpf_sock, src_port)), > BPF_JMP_IMM(BPF_JNE, BPF_REG_7, 0x1002, 2), > -- > 2.21.0 >