[PATCH 0/3] arm64: insn: Generate 64 bit mask immediates correctly

Will Deacon will at kernel.org
Tue Feb 15 15:18:29 PST 2022


On Thu, 27 Jan 2022 16:21:24 +0000, James Morse wrote:
> aarch64_insn_gen_logical_immediate() is generating the wrong code if
> it is handed a 64bit immediate which has a single span of 1s (i.e. a
> mask), with bit 63 set, and 0s in the remaining upper 32 bits.
> Clear as mud. An example always helps: 0x800000003fffffff would be wrongly
> encoded, but 0x000000003fffffff is unaffected.
> 
> It would appear eBPF is unable to hit these cases, as build_insn()'s
> imm value is a s32, so when used with BPF_ALU64, the sign-extended
> u64 immediate would always have all-1s or all-0s in the upper 32 bits.
> 
> [...]

Applied to arm64 (for-next/insn), thanks!

[1/3] arm64: selftests: Generate all the possible logical immediates as a header
      (no commit info)
[2/3] arm64: insn: Add tests for aarch64_insn_gen_logical_immediate()
      (no commit info)
[3/3] arm64: insn: Generate 64 bit mask immediates correctly
      https://git.kernel.org/arm64/c/a6aab0188299

Cheers,
-- 
Will

https://fixes.arm64.dev
https://next.arm64.dev
https://will.arm64.dev



More information about the linux-arm-kernel mailing list