mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
selftests/bpf: Fix bind program for big endian systems
Without this fix, the bind4 and bind6 programs will reject bind attempts on big endian systems. This patch ensures that CI tests pass for the s390x architecture. Signed-off-by: Jordan Rife <jrife@google.com> Link: https://lore.kernel.org/r/20240429214529.2644801-2-jrife@google.com Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
This commit is contained in:
committed by
Martin KaFai Lau
parent
08e90da687
commit
8e667a065d
19
tools/testing/selftests/bpf/progs/bind_prog.h
Normal file
19
tools/testing/selftests/bpf/progs/bind_prog.h
Normal file
@@ -0,0 +1,19 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
#ifndef __BIND_PROG_H__
|
||||
#define __BIND_PROG_H__
|
||||
|
||||
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
|
||||
#define load_byte(src, b, s) \
|
||||
(((volatile __u8 *)&(src))[b] << 8 * b)
|
||||
#define load_word(src, w, s) \
|
||||
(((volatile __u16 *)&(src))[w] << 16 * w)
|
||||
#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
|
||||
#define load_byte(src, b, s) \
|
||||
(((volatile __u8 *)&(src))[(b) + (sizeof(src) - (s))] << 8 * ((s) - (b) - 1))
|
||||
#define load_word(src, w, s) \
|
||||
(((volatile __u16 *)&(src))[w] << 16 * (((s) / 2) - (w) - 1))
|
||||
#else
|
||||
# error "Fix your compiler's __BYTE_ORDER__?!"
|
||||
#endif
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user