linux-next/arch/loongarch
Tiezhu Yang 772cbe948f LoongArch: BPF: Fix sign-extension mov instructions
We can see that "Short form of movsx, dst_reg = (s8,s16,s32)src_reg" in
include/linux/filter.h, additionally, for BPF_ALU64 the value of the
destination register is unchanged whereas for BPF_ALU the upper 32 bits
of the destination register are zeroed, so it should clear the upper 32
bits for BPF_ALU.

[root@linux fedora]# echo 1 > /proc/sys/net/core/bpf_jit_enable
[root@linux fedora]# modprobe test_bpf

Before:
test_bpf: #81 ALU_MOVSX | BPF_B jited:1 ret 2 != 1 (0x2 != 0x1)FAIL (1 times)
test_bpf: #82 ALU_MOVSX | BPF_H jited:1 ret 2 != 1 (0x2 != 0x1)FAIL (1 times)

After:
test_bpf: #81 ALU_MOVSX | BPF_B jited:1 6 PASS
test_bpf: #82 ALU_MOVSX | BPF_H jited:1 6 PASS

By the way, the bpf selftest case "./test_progs -t verifier_movsx" can
also be fixed with this patch.

Fixes: f48012f161 ("LoongArch: BPF: Support sign-extension mov instructions")
Acked-by: Hengqi Chen <hengqi.chen@gmail.com>
Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
2023-12-09 15:49:16 +08:00
..
boot loongarch: efi: enable generic EFI compressed boot 2022-09-20 09:50:31 +02:00
configs LoongArch: KVM: Enable kvm config and add the makefile 2023-10-02 10:01:29 +08:00
crypto crypto: loongarch/crc32 - remove redundant setting of alignmask to 0 2023-10-27 18:04:24 +08:00
include LoongArch: Preserve syscall nr across execve() 2023-12-09 15:49:15 +08:00
kernel LoongArch: Set unwind stack type to unknown rather than set error flag 2023-12-09 15:49:15 +08:00
kvm LoongArch: KVM: Enable kvm config and add the makefile 2023-10-02 10:01:29 +08:00
lib LoongArch: Add KASAN (Kernel Address Sanitizer) support 2023-09-06 22:54:16 +08:00
mm LoongArch: Mark {dmw,tlb}_virt_to_page() exports as non-GPL 2023-11-21 15:03:25 +08:00
net LoongArch: BPF: Fix sign-extension mov instructions 2023-12-09 15:49:16 +08:00
pci LoongArch: Add FDT booting support from efi system table 2022-12-14 08:41:53 +08:00
power LoongArch: Export some arch-specific pm interfaces 2023-06-29 20:58:44 +08:00
vdso kbuild: unify vdso_install rules 2023-10-28 21:09:02 +09:00
Kbuild LoongArch: KVM: Enable kvm config and add the makefile 2023-10-02 10:01:29 +08:00
Kconfig LoongArch changes for v6.7 2023-11-12 10:58:08 -08:00
Kconfig.debug LoongArch: Add prologue unwinder support 2022-08-12 13:10:11 +08:00
Makefile LoongArch: Apply dynamic relocations for LLD 2023-12-09 15:49:15 +08:00