Hi, These are my current patches for the discussion from [1] and [2]. With these changes tests pass on both x86_64 and s390x, but there are quite a few things I'm not sure about, hence it's just an RFC: - Can moving size < target_size check lead to incorrect shifts in some corner cases that I missed? - Are different layouts of remote_port on little- and big-endian a bug or a feature? Do we want things to be this way? If not, are we bound by the ABI anyway? - Is there any way to make uapi changes look nicer? A wall of nested structs, unions and ifdefs in an otherwise clean struct definition isn't looking particularly good. - What is the Officially Approved way to access the remote_port field from C code? I'm leaning towards bpf_ntohs((__u16)remote_port), like in [3], and I adjusted the test accordingly. [1] https://lore.kernel.org/bpf/CAEf4BzaRNLw9_EnaMo5e46CdEkzbJiVU3j9oxnsemBKjNFf3wQ@xxxxxxxxxxxxxx/ [2] https://lore.kernel.org/bpf/20220221180358.169101-1-jakub@xxxxxxxxxxxxxx/ [3] https://lore.kernel.org/bpf/20220113070245.791577-1-imagedong@xxxxxxxxxxx/ Ilya Leoshkevich (3): bpf: Fix certain narrow loads with offsets bpf: Fix bpf_sk_lookup.remote_port on big-endian selftests/bpf: Adapt bpf_sk_lookup.remote_port loads include/uapi/linux/bpf.h | 17 +++++++++++++++-- kernel/bpf/verifier.c | 14 +++++++++----- net/core/filter.c | 5 ++--- tools/include/uapi/linux/bpf.h | 17 +++++++++++++++-- .../selftests/bpf/progs/test_sk_lookup.c | 17 +++++++++++------ 5 files changed, 52 insertions(+), 18 deletions(-) -- 2.34.1