ebpf: BPF_ALU32 | BPF_ARSH on BE arches

Yauheni Kaliuta
2019-06-25T09:00:20Z

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