Upper bits should be zeroed in endianness conversion:
- even when there's no need to change endianness (i.e., BPF_FROM_BE
on big endian or BPF_FROM_LE on little endian);
- after rev16.
This patch fixes such bugs by emitting extra instructions to clear
upper bits.
Cc: Zi Shen Lim<zlim.lnx@xxxxxxxxx>
Cc: Alexei Starovoitov<ast@xxxxxxxxxxxx>
Fixes: e54bcde3d69d ("arm64: eBPF JIT compiler")
Signed-off-by: Xi Wang<xi.wang@xxxxxxxxx>
The current testsuite catches the 16-bit bugs. I'll send a separate
patch that extends test_bpf to catch the 32-bit ones.