ebpf: BPF_ALU32 | BPF_ARSH on BE arches

From: Yauheni Kaliuta
Date: Tue Jun 25 2019 - 05:00:20 EST


Hi!

Looks like the code:

ALU_ARSH_X:
DST = (u64) (u32) ((*(s32 *) &DST) >> SRC);
CONT;
ALU_ARSH_K:
DST = (u64) (u32) ((*(s32 *) &DST) >> IMM);
CONT;

works incorrectly on BE arches since it must operate on lower
parts of 64bit registers.

See failure of test_verifier test 'arsh32 on imm 2' (#23 on
5.2-rc6).


--
WBR,
Yauheni Kaliuta