Re: [PATCH bpf] bpf: Fix a bpf_jit_dump issue for x86_64 with sysctl bpf_jit_enable.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Jun 8, 2023 at 5:54 PM Yonghong Song <yhs@xxxxxx> wrote:
>
> The sysctl net/core/bpf_jit_enable does not work now due to Commit
> 1022a5498f6f ("bpf, x86_64: Use bpf_jit_binary_pack_alloc").
> The commit saved the jitted insns into 'rw_image' instead of 'image'
> which caused bpf_jit_dump not dumping proper content.
>
> With 'echo 2 > /proc/sys/net/core/bpf_jit_enable', run
> './test_progs -t fentry_test'. Without this patch, one of jitted
> image for one particular prog is:
>   flen=17 proglen=92 pass=4 image=0000000014c64883 from=test_progs pid=1807
>   00000000: cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc
>   00000010: cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc
>   00000020: cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc
>   00000030: cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc
>   00000040: cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc
>   00000050: cc cc cc cc cc cc cc cc cc cc cc cc
>
> With this patch, the jitte image for the same prog is:
>   flen=17 proglen=92 pass=4 image=00000000b90254b7 from=test_progs pid=1809
>   00000000: f3 0f 1e fa 0f 1f 44 00 00 66 90 55 48 89 e5 f3
>   00000010: 0f 1e fa 31 f6 48 8b 57 00 48 83 fa 07 75 2b 48
>   00000020: 8b 57 10 83 fa 09 75 22 48 8b 57 08 48 81 e2 ff
>   00000030: 00 00 00 48 83 fa 08 75 11 48 8b 7f 18 be 01 00
>   00000040: 00 00 48 83 ff 0a 74 02 31 f6 48 bf 18 d0 14 00
>   00000050: 00 c9 ff ff 48 89 77 00 31 c0 c9 c3
>
> Fixes: 1022a5498f6f ("bpf, x86_64: Use bpf_jit_binary_pack_alloc")
> Signed-off-by: Yonghong Song <yhs@xxxxxx>

Acked-by: Song Liu <song@xxxxxxxxxx>

Thanks for the fix!
Song

> ---
>  arch/x86/net/bpf_jit_comp.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/x86/net/bpf_jit_comp.c b/arch/x86/net/bpf_jit_comp.c
> index 1056bbf55b17..438adb695daa 100644
> --- a/arch/x86/net/bpf_jit_comp.c
> +++ b/arch/x86/net/bpf_jit_comp.c
> @@ -2570,7 +2570,7 @@ struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *prog)
>         }
>
>         if (bpf_jit_enable > 1)
> -               bpf_jit_dump(prog->len, proglen, pass + 1, image);
> +               bpf_jit_dump(prog->len, proglen, pass + 1, rw_image);
>
>         if (image) {
>                 if (!prog->is_func || extra_pass) {
> --
> 2.34.1
>
>





[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux