[PATCH] arm64: bpf: fix signedness bug in loading 64-bit immediate
Xi Wang
xi.wang at gmail.com
Fri May 8 01:45:59 PDT 2015
On Fri, May 8, 2015 at 1:38 AM, Will Deacon <will.deacon at arm.com> wrote:
>> - imm64 = (u64)insn1.imm << 32 | imm;
>> + imm64 = ((u64)(u32)insn1.imm) << 32 | (u64)(u32)imm;
>
> This seems a bit convoluted to me. Don't you just need to add a (u32)
> cast to imm and that's it? The (u64)(u32) looks redundant.
You're right - the second (u64) is redundant; the hope was to make
the code easier to understand. It's from the interpreter code in
kernel/core/bpf.c, which uses (u64)(u32) as well.
>> - BPF_ALU64_IMM(BPF_MOV, R0, 1),
>> + BPF_LD_IMM64(R0, 0x1ffffffffLL),
>> + BPF_ALU64_IMM(BPF_RSH, R0, 32), /* R0 = 1 */
>> BPF_EXIT_INSN(),
>
> This hunk should probably be a separate patch, unless you get Alexei's ack
> for me to take it via the arm64 tree too.
I would be happy to split this into a separate patch if that works
better, or simply drop this part.
- xi
More information about the linux-arm-kernel
mailing list