-
Notifications
You must be signed in to change notification settings - Fork 58.5k
Update README #514
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Closed
Update README #514
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
fengguang
pushed a commit
to 0day-ci/linux
that referenced
this pull request
Jun 13, 2020
We forgot one call site directly using drm->dev_private. This leads to a crash like this: 8<--- cut here --- Unable to handle kernel NULL pointer dereference at virtual address 00000918 pgd = (ptrval) [00000918] *pgd=00000000 Internal error: Oops: 5 [#1] SMP ARM Modules linked in: CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.7.0-15001-gfa384b50b96b-dirty torvalds#514 Hardware name: ST-Ericsson Ux5x0 platform (Device Tree Support) PC is at mcde_display_enable+0x78/0x7c0 LR is at mcde_display_enable+0x78/0x7c0 Fix this by using to_mcde() as in other functions. Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Fixes: fd7ee85 ("drm/mcde: Don't use drm_device->dev_private") Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
ruscur
pushed a commit
to ruscur/linux
that referenced
this pull request
Jun 17, 2020
Unable to handle kernel NULL pointer dereference at virtual address 00000918 pgd = (ptrval) [00000918] *pgd=00000000 Internal error: Oops: 5 [#1] SMP ARM Modules linked in: CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.7.0-15001-gfa384b50b96b-dirty torvalds#514 Hardware name: ST-Ericsson Ux5x0 platform (Device Tree Support) PC is at mcde_display_enable+0x78/0x7c0 LR is at mcde_display_enable+0x78/0x7c0 Fix this by using to_mcde() as in other functions. Fixes: fd7ee85 ("drm/mcde: Don't use drm_device->dev_private") Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Reviewed-by: Sam Ravnborg <sam@ravnborg.org> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Link: https://patchwork.freedesktop.org/patch/msgid/20200613223027.4189309-2-linus.walleij@linaro.org
fifteenhex
pushed a commit
to fifteenhex/linux
that referenced
this pull request
Jul 25, 2020
Unable to handle kernel NULL pointer dereference at virtual address 00000918 pgd = (ptrval) [00000918] *pgd=00000000 Internal error: Oops: 5 [#1] SMP ARM Modules linked in: CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.7.0-15001-gfa384b50b96b-dirty torvalds#514 Hardware name: ST-Ericsson Ux5x0 platform (Device Tree Support) PC is at mcde_display_enable+0x78/0x7c0 LR is at mcde_display_enable+0x78/0x7c0 Fix this by using to_mcde() as in other functions. Fixes: fd7ee85 ("drm/mcde: Don't use drm_device->dev_private") Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Reviewed-by: Sam Ravnborg <sam@ravnborg.org> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Link: https://patchwork.freedesktop.org/patch/msgid/20200613223027.4189309-2-linus.walleij@linaro.org
fifteenhex
pushed a commit
to fifteenhex/linux
that referenced
this pull request
Jul 28, 2020
Unable to handle kernel NULL pointer dereference at virtual address 00000918 pgd = (ptrval) [00000918] *pgd=00000000 Internal error: Oops: 5 [#1] SMP ARM Modules linked in: CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.7.0-15001-gfa384b50b96b-dirty torvalds#514 Hardware name: ST-Ericsson Ux5x0 platform (Device Tree Support) PC is at mcde_display_enable+0x78/0x7c0 LR is at mcde_display_enable+0x78/0x7c0 Fix this by using to_mcde() as in other functions. Fixes: fd7ee85 ("drm/mcde: Don't use drm_device->dev_private") Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Reviewed-by: Sam Ravnborg <sam@ravnborg.org> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Link: https://patchwork.freedesktop.org/patch/msgid/20200613223027.4189309-2-linus.walleij@linaro.org
fifteenhex
pushed a commit
to fifteenhex/linux
that referenced
this pull request
Jul 28, 2020
Unable to handle kernel NULL pointer dereference at virtual address 00000918 pgd = (ptrval) [00000918] *pgd=00000000 Internal error: Oops: 5 [#1] SMP ARM Modules linked in: CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.7.0-15001-gfa384b50b96b-dirty torvalds#514 Hardware name: ST-Ericsson Ux5x0 platform (Device Tree Support) PC is at mcde_display_enable+0x78/0x7c0 LR is at mcde_display_enable+0x78/0x7c0 Fix this by using to_mcde() as in other functions. Fixes: fd7ee85 ("drm/mcde: Don't use drm_device->dev_private") Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Reviewed-by: Sam Ravnborg <sam@ravnborg.org> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Link: https://patchwork.freedesktop.org/patch/msgid/20200613223027.4189309-2-linus.walleij@linaro.org
fifteenhex
pushed a commit
to fifteenhex/linux
that referenced
this pull request
Jul 29, 2020
Unable to handle kernel NULL pointer dereference at virtual address 00000918 pgd = (ptrval) [00000918] *pgd=00000000 Internal error: Oops: 5 [#1] SMP ARM Modules linked in: CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.7.0-15001-gfa384b50b96b-dirty torvalds#514 Hardware name: ST-Ericsson Ux5x0 platform (Device Tree Support) PC is at mcde_display_enable+0x78/0x7c0 LR is at mcde_display_enable+0x78/0x7c0 Fix this by using to_mcde() as in other functions. Fixes: fd7ee85 ("drm/mcde: Don't use drm_device->dev_private") Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Reviewed-by: Sam Ravnborg <sam@ravnborg.org> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Link: https://patchwork.freedesktop.org/patch/msgid/20200613223027.4189309-2-linus.walleij@linaro.org
fifteenhex
pushed a commit
to fifteenhex/linux
that referenced
this pull request
Aug 1, 2020
Unable to handle kernel NULL pointer dereference at virtual address 00000918 pgd = (ptrval) [00000918] *pgd=00000000 Internal error: Oops: 5 [#1] SMP ARM Modules linked in: CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.7.0-15001-gfa384b50b96b-dirty torvalds#514 Hardware name: ST-Ericsson Ux5x0 platform (Device Tree Support) PC is at mcde_display_enable+0x78/0x7c0 LR is at mcde_display_enable+0x78/0x7c0 Fix this by using to_mcde() as in other functions. Fixes: fd7ee85 ("drm/mcde: Don't use drm_device->dev_private") Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Reviewed-by: Sam Ravnborg <sam@ravnborg.org> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Link: https://patchwork.freedesktop.org/patch/msgid/20200613223027.4189309-2-linus.walleij@linaro.org
jiangenj
pushed a commit
to jiangenj/linux
that referenced
this pull request
Apr 25, 2025
lkl: python -> python3
guidosarducci
added a commit
to guidosarducci/linux
that referenced
this pull request
Oct 14, 2025
Use bpf_user_pt_regs_t for perf ctx arg to avoid below failures. This type previously added because "long" type in struct pt_regs on 32-bit arm evals to wrong size in 64-bit BPF VM, resulting in errors like: run_subtest:PASS:obj_open_mem 0 nsec libbpf: prog 'arg_tag_ctx_perf': BPF program load failed: -EINVAL libbpf: prog 'arg_tag_ctx_perf': failed to load: -EINVAL libbpf: failed to load object 'verifier_global_subprogs' run_subtest:FAIL:unexpected_load_failure unexpected error: -22 (errno 22) VERIFIER LOG: ============= func#0 @0 func#1 @15 func#2 @21 func#3 @23 func#4 @25 Live regs before insn: 0: .12345.... (bf) r6 = r1 1: .123456... (85) call pc+13 2: 0.23456... (bc) w7 = w0 3: ..234567.. (bf) r1 = r6 4: .1234567.. (85) call pc+16 5: 0.234567.. (bc) w8 = w0 6: ..2345678. (0c) w8 += w7 7: ..23456.8. (bf) r1 = r6 8: .123456.8. (85) call pc+14 9: 0.23456.8. (0c) w8 += w0 10: ..23456.8. (bf) r1 = r6 11: .12345..8. (85) call pc+13 12: 0.......8. (0c) w8 += w0 13: ........8. (bc) w0 = w8 14: 0......... (95) exit 15: .1........ (18) r2 = 0xdfc7d008 17: .12....... (b4) w3 = 1024 18: .123...... (b7) r4 = 0 19: .1234..... (85) call bpf_get_stack#67 20: 0......... (95) exit 21: .......... (b4) w0 = 0 22: 0......... (95) exit 23: .......... (b4) w0 = 0 24: 0......... (95) exit 25: .......... (b4) w0 = 0 26: 0......... (95) exit arg#0 reference type('UNKNOWN ') size cannot be determined: -22 0: R1=ctx() R10=fp0 ; int arg_tag_ctx_perf(void *ctx) @ verifier_global_subprogs.c:271 0: (bf) r6 = r1 ; R1=ctx() R6=ctx() ; return subprog_ctx_tag(ctx) + @ verifier_global_subprogs.c:273 1: (85) call pc+13 Func#1 ('subprog_ctx_tag') is global and assumed valid. 2: R0=scalar() 2: (bc) w7 = w0 ; R0=scalar() R7=scalar(smin=0,smax=umax=0xffffffff,var_off=(0x0; 0xffffffff)) ; perf_subprog_regs(ctx) + @ verifier_global_subprogs.c:274 3: (bf) r1 = r6 ; R1=ctx() R6=ctx() 4: (85) call pc+16 arg#0 should be `struct bpf_perf_event_data *` Caller passes invalid args into func#2 ('perf_subprog_regs') processed 5 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 ============= torvalds#514/14 verifier_global_subprogs/arg_tag_ctx_perf:FAIL Signed-off-by: Tony Ambardar <tony.ambardar@gmail.com>
guidosarducci
added a commit
to guidosarducci/linux
that referenced
this pull request
Oct 15, 2025
Use bpf_user_pt_regs_t for perf ctx arg to avoid below failures. This type previously added because "long" type in struct pt_regs on 32-bit arm evals to wrong size in 64-bit BPF VM, resulting in errors like: run_subtest:PASS:obj_open_mem 0 nsec libbpf: prog 'arg_tag_ctx_perf': BPF program load failed: -EINVAL libbpf: prog 'arg_tag_ctx_perf': failed to load: -EINVAL libbpf: failed to load object 'verifier_global_subprogs' run_subtest:FAIL:unexpected_load_failure unexpected error: -22 (errno 22) VERIFIER LOG: ============= func#0 @0 func#1 @15 func#2 @21 func#3 @23 func#4 @25 Live regs before insn: 0: .12345.... (bf) r6 = r1 1: .123456... (85) call pc+13 2: 0.23456... (bc) w7 = w0 3: ..234567.. (bf) r1 = r6 4: .1234567.. (85) call pc+16 5: 0.234567.. (bc) w8 = w0 6: ..2345678. (0c) w8 += w7 7: ..23456.8. (bf) r1 = r6 8: .123456.8. (85) call pc+14 9: 0.23456.8. (0c) w8 += w0 10: ..23456.8. (bf) r1 = r6 11: .12345..8. (85) call pc+13 12: 0.......8. (0c) w8 += w0 13: ........8. (bc) w0 = w8 14: 0......... (95) exit 15: .1........ (18) r2 = 0xdfc7d008 17: .12....... (b4) w3 = 1024 18: .123...... (b7) r4 = 0 19: .1234..... (85) call bpf_get_stack#67 20: 0......... (95) exit 21: .......... (b4) w0 = 0 22: 0......... (95) exit 23: .......... (b4) w0 = 0 24: 0......... (95) exit 25: .......... (b4) w0 = 0 26: 0......... (95) exit arg#0 reference type('UNKNOWN ') size cannot be determined: -22 0: R1=ctx() R10=fp0 ; int arg_tag_ctx_perf(void *ctx) @ verifier_global_subprogs.c:271 0: (bf) r6 = r1 ; R1=ctx() R6=ctx() ; return subprog_ctx_tag(ctx) + @ verifier_global_subprogs.c:273 1: (85) call pc+13 Func#1 ('subprog_ctx_tag') is global and assumed valid. 2: R0=scalar() 2: (bc) w7 = w0 ; R0=scalar() R7=scalar(smin=0,smax=umax=0xffffffff,var_off=(0x0; 0xffffffff)) ; perf_subprog_regs(ctx) + @ verifier_global_subprogs.c:274 3: (bf) r1 = r6 ; R1=ctx() R6=ctx() 4: (85) call pc+16 arg#0 should be `struct bpf_perf_event_data *` Caller passes invalid args into func#2 ('perf_subprog_regs') processed 5 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 ============= torvalds#514/14 verifier_global_subprogs/arg_tag_ctx_perf:FAIL Signed-off-by: Tony Ambardar <tony.ambardar@gmail.com>
guidosarducci
added a commit
to guidosarducci/linux
that referenced
this pull request
Oct 20, 2025
Use bpf_user_pt_regs_t for perf ctx arg to avoid below failures. This type previously added because "long" type in struct pt_regs on 32-bit arm evals to wrong size in 64-bit BPF VM, resulting in errors like: run_subtest:PASS:obj_open_mem 0 nsec libbpf: prog 'arg_tag_ctx_perf': BPF program load failed: -EINVAL libbpf: prog 'arg_tag_ctx_perf': failed to load: -EINVAL libbpf: failed to load object 'verifier_global_subprogs' run_subtest:FAIL:unexpected_load_failure unexpected error: -22 (errno 22) VERIFIER LOG: ============= func#0 @0 func#1 @15 func#2 @21 func#3 @23 func#4 @25 Live regs before insn: 0: .12345.... (bf) r6 = r1 1: .123456... (85) call pc+13 2: 0.23456... (bc) w7 = w0 3: ..234567.. (bf) r1 = r6 4: .1234567.. (85) call pc+16 5: 0.234567.. (bc) w8 = w0 6: ..2345678. (0c) w8 += w7 7: ..23456.8. (bf) r1 = r6 8: .123456.8. (85) call pc+14 9: 0.23456.8. (0c) w8 += w0 10: ..23456.8. (bf) r1 = r6 11: .12345..8. (85) call pc+13 12: 0.......8. (0c) w8 += w0 13: ........8. (bc) w0 = w8 14: 0......... (95) exit 15: .1........ (18) r2 = 0xdfc7d008 17: .12....... (b4) w3 = 1024 18: .123...... (b7) r4 = 0 19: .1234..... (85) call bpf_get_stack#67 20: 0......... (95) exit 21: .......... (b4) w0 = 0 22: 0......... (95) exit 23: .......... (b4) w0 = 0 24: 0......... (95) exit 25: .......... (b4) w0 = 0 26: 0......... (95) exit arg#0 reference type('UNKNOWN ') size cannot be determined: -22 0: R1=ctx() R10=fp0 ; int arg_tag_ctx_perf(void *ctx) @ verifier_global_subprogs.c:271 0: (bf) r6 = r1 ; R1=ctx() R6=ctx() ; return subprog_ctx_tag(ctx) + @ verifier_global_subprogs.c:273 1: (85) call pc+13 Func#1 ('subprog_ctx_tag') is global and assumed valid. 2: R0=scalar() 2: (bc) w7 = w0 ; R0=scalar() R7=scalar(smin=0,smax=umax=0xffffffff,var_off=(0x0; 0xffffffff)) ; perf_subprog_regs(ctx) + @ verifier_global_subprogs.c:274 3: (bf) r1 = r6 ; R1=ctx() R6=ctx() 4: (85) call pc+16 arg#0 should be `struct bpf_perf_event_data *` Caller passes invalid args into func#2 ('perf_subprog_regs') processed 5 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 ============= torvalds#514/14 verifier_global_subprogs/arg_tag_ctx_perf:FAIL Signed-off-by: Tony Ambardar <tony.ambardar@gmail.com>
guidosarducci
added a commit
to guidosarducci/linux
that referenced
this pull request
Oct 21, 2025
Use bpf_user_pt_regs_t for perf ctx arg to avoid below failures. This type previously added because "long" type in struct pt_regs on 32-bit arm evals to wrong size in 64-bit BPF VM, resulting in errors like: run_subtest:PASS:obj_open_mem 0 nsec libbpf: prog 'arg_tag_ctx_perf': BPF program load failed: -EINVAL libbpf: prog 'arg_tag_ctx_perf': failed to load: -EINVAL libbpf: failed to load object 'verifier_global_subprogs' run_subtest:FAIL:unexpected_load_failure unexpected error: -22 (errno 22) VERIFIER LOG: ============= func#0 @0 func#1 @15 func#2 @21 func#3 @23 func#4 @25 Live regs before insn: 0: .12345.... (bf) r6 = r1 1: .123456... (85) call pc+13 2: 0.23456... (bc) w7 = w0 3: ..234567.. (bf) r1 = r6 4: .1234567.. (85) call pc+16 5: 0.234567.. (bc) w8 = w0 6: ..2345678. (0c) w8 += w7 7: ..23456.8. (bf) r1 = r6 8: .123456.8. (85) call pc+14 9: 0.23456.8. (0c) w8 += w0 10: ..23456.8. (bf) r1 = r6 11: .12345..8. (85) call pc+13 12: 0.......8. (0c) w8 += w0 13: ........8. (bc) w0 = w8 14: 0......... (95) exit 15: .1........ (18) r2 = 0xdfc7d008 17: .12....... (b4) w3 = 1024 18: .123...... (b7) r4 = 0 19: .1234..... (85) call bpf_get_stack#67 20: 0......... (95) exit 21: .......... (b4) w0 = 0 22: 0......... (95) exit 23: .......... (b4) w0 = 0 24: 0......... (95) exit 25: .......... (b4) w0 = 0 26: 0......... (95) exit arg#0 reference type('UNKNOWN ') size cannot be determined: -22 0: R1=ctx() R10=fp0 ; int arg_tag_ctx_perf(void *ctx) @ verifier_global_subprogs.c:271 0: (bf) r6 = r1 ; R1=ctx() R6=ctx() ; return subprog_ctx_tag(ctx) + @ verifier_global_subprogs.c:273 1: (85) call pc+13 Func#1 ('subprog_ctx_tag') is global and assumed valid. 2: R0=scalar() 2: (bc) w7 = w0 ; R0=scalar() R7=scalar(smin=0,smax=umax=0xffffffff,var_off=(0x0; 0xffffffff)) ; perf_subprog_regs(ctx) + @ verifier_global_subprogs.c:274 3: (bf) r1 = r6 ; R1=ctx() R6=ctx() 4: (85) call pc+16 arg#0 should be `struct bpf_perf_event_data *` Caller passes invalid args into func#2 ('perf_subprog_regs') processed 5 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 ============= torvalds#514/14 verifier_global_subprogs/arg_tag_ctx_perf:FAIL Signed-off-by: Tony Ambardar <tony.ambardar@gmail.com>
guidosarducci
added a commit
to guidosarducci/linux
that referenced
this pull request
Oct 21, 2025
Use bpf_user_pt_regs_t for perf ctx arg to avoid below failures. This type previously added because "long" type in struct pt_regs on 32-bit arm evals to wrong size in 64-bit BPF VM, resulting in errors like: run_subtest:PASS:obj_open_mem 0 nsec libbpf: prog 'arg_tag_ctx_perf': BPF program load failed: -EINVAL libbpf: prog 'arg_tag_ctx_perf': failed to load: -EINVAL libbpf: failed to load object 'verifier_global_subprogs' run_subtest:FAIL:unexpected_load_failure unexpected error: -22 (errno 22) VERIFIER LOG: ============= func#0 @0 func#1 @15 func#2 @21 func#3 @23 func#4 @25 Live regs before insn: 0: .12345.... (bf) r6 = r1 1: .123456... (85) call pc+13 2: 0.23456... (bc) w7 = w0 3: ..234567.. (bf) r1 = r6 4: .1234567.. (85) call pc+16 5: 0.234567.. (bc) w8 = w0 6: ..2345678. (0c) w8 += w7 7: ..23456.8. (bf) r1 = r6 8: .123456.8. (85) call pc+14 9: 0.23456.8. (0c) w8 += w0 10: ..23456.8. (bf) r1 = r6 11: .12345..8. (85) call pc+13 12: 0.......8. (0c) w8 += w0 13: ........8. (bc) w0 = w8 14: 0......... (95) exit 15: .1........ (18) r2 = 0xdfc7d008 17: .12....... (b4) w3 = 1024 18: .123...... (b7) r4 = 0 19: .1234..... (85) call bpf_get_stack#67 20: 0......... (95) exit 21: .......... (b4) w0 = 0 22: 0......... (95) exit 23: .......... (b4) w0 = 0 24: 0......... (95) exit 25: .......... (b4) w0 = 0 26: 0......... (95) exit arg#0 reference type('UNKNOWN ') size cannot be determined: -22 0: R1=ctx() R10=fp0 ; int arg_tag_ctx_perf(void *ctx) @ verifier_global_subprogs.c:271 0: (bf) r6 = r1 ; R1=ctx() R6=ctx() ; return subprog_ctx_tag(ctx) + @ verifier_global_subprogs.c:273 1: (85) call pc+13 Func#1 ('subprog_ctx_tag') is global and assumed valid. 2: R0=scalar() 2: (bc) w7 = w0 ; R0=scalar() R7=scalar(smin=0,smax=umax=0xffffffff,var_off=(0x0; 0xffffffff)) ; perf_subprog_regs(ctx) + @ verifier_global_subprogs.c:274 3: (bf) r1 = r6 ; R1=ctx() R6=ctx() 4: (85) call pc+16 arg#0 should be `struct bpf_perf_event_data *` Caller passes invalid args into func#2 ('perf_subprog_regs') processed 5 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 ============= torvalds#514/14 verifier_global_subprogs/arg_tag_ctx_perf:FAIL Signed-off-by: Tony Ambardar <tony.ambardar@gmail.com>
guidosarducci
added a commit
to guidosarducci/linux
that referenced
this pull request
Oct 21, 2025
Use bpf_user_pt_regs_t for perf ctx arg to avoid below failures. This type previously added because "long" type in struct pt_regs on 32-bit arm evals to wrong size in 64-bit BPF VM, resulting in errors like: run_subtest:PASS:obj_open_mem 0 nsec libbpf: prog 'arg_tag_ctx_perf': BPF program load failed: -EINVAL libbpf: prog 'arg_tag_ctx_perf': failed to load: -EINVAL libbpf: failed to load object 'verifier_global_subprogs' run_subtest:FAIL:unexpected_load_failure unexpected error: -22 (errno 22) VERIFIER LOG: ============= func#0 @0 func#1 @15 func#2 @21 func#3 @23 func#4 @25 Live regs before insn: 0: .12345.... (bf) r6 = r1 1: .123456... (85) call pc+13 2: 0.23456... (bc) w7 = w0 3: ..234567.. (bf) r1 = r6 4: .1234567.. (85) call pc+16 5: 0.234567.. (bc) w8 = w0 6: ..2345678. (0c) w8 += w7 7: ..23456.8. (bf) r1 = r6 8: .123456.8. (85) call pc+14 9: 0.23456.8. (0c) w8 += w0 10: ..23456.8. (bf) r1 = r6 11: .12345..8. (85) call pc+13 12: 0.......8. (0c) w8 += w0 13: ........8. (bc) w0 = w8 14: 0......... (95) exit 15: .1........ (18) r2 = 0xdfc7d008 17: .12....... (b4) w3 = 1024 18: .123...... (b7) r4 = 0 19: .1234..... (85) call bpf_get_stack#67 20: 0......... (95) exit 21: .......... (b4) w0 = 0 22: 0......... (95) exit 23: .......... (b4) w0 = 0 24: 0......... (95) exit 25: .......... (b4) w0 = 0 26: 0......... (95) exit arg#0 reference type('UNKNOWN ') size cannot be determined: -22 0: R1=ctx() R10=fp0 ; int arg_tag_ctx_perf(void *ctx) @ verifier_global_subprogs.c:271 0: (bf) r6 = r1 ; R1=ctx() R6=ctx() ; return subprog_ctx_tag(ctx) + @ verifier_global_subprogs.c:273 1: (85) call pc+13 Func#1 ('subprog_ctx_tag') is global and assumed valid. 2: R0=scalar() 2: (bc) w7 = w0 ; R0=scalar() R7=scalar(smin=0,smax=umax=0xffffffff,var_off=(0x0; 0xffffffff)) ; perf_subprog_regs(ctx) + @ verifier_global_subprogs.c:274 3: (bf) r1 = r6 ; R1=ctx() R6=ctx() 4: (85) call pc+16 arg#0 should be `struct bpf_perf_event_data *` Caller passes invalid args into func#2 ('perf_subprog_regs') processed 5 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 ============= torvalds#514/14 verifier_global_subprogs/arg_tag_ctx_perf:FAIL Signed-off-by: Tony Ambardar <tony.ambardar@gmail.com>
guidosarducci
added a commit
to guidosarducci/linux
that referenced
this pull request
Oct 27, 2025
Use bpf_user_pt_regs_t for perf ctx arg to avoid below failures. This type previously added because "long" type in struct pt_regs on 32-bit arm evals to wrong size in 64-bit BPF VM, resulting in errors like: run_subtest:PASS:obj_open_mem 0 nsec libbpf: prog 'arg_tag_ctx_perf': BPF program load failed: -EINVAL libbpf: prog 'arg_tag_ctx_perf': failed to load: -EINVAL libbpf: failed to load object 'verifier_global_subprogs' run_subtest:FAIL:unexpected_load_failure unexpected error: -22 (errno 22) VERIFIER LOG: ============= func#0 @0 func#1 @15 func#2 @21 func#3 @23 func#4 @25 Live regs before insn: 0: .12345.... (bf) r6 = r1 1: .123456... (85) call pc+13 2: 0.23456... (bc) w7 = w0 3: ..234567.. (bf) r1 = r6 4: .1234567.. (85) call pc+16 5: 0.234567.. (bc) w8 = w0 6: ..2345678. (0c) w8 += w7 7: ..23456.8. (bf) r1 = r6 8: .123456.8. (85) call pc+14 9: 0.23456.8. (0c) w8 += w0 10: ..23456.8. (bf) r1 = r6 11: .12345..8. (85) call pc+13 12: 0.......8. (0c) w8 += w0 13: ........8. (bc) w0 = w8 14: 0......... (95) exit 15: .1........ (18) r2 = 0xdfc7d008 17: .12....... (b4) w3 = 1024 18: .123...... (b7) r4 = 0 19: .1234..... (85) call bpf_get_stack#67 20: 0......... (95) exit 21: .......... (b4) w0 = 0 22: 0......... (95) exit 23: .......... (b4) w0 = 0 24: 0......... (95) exit 25: .......... (b4) w0 = 0 26: 0......... (95) exit arg#0 reference type('UNKNOWN ') size cannot be determined: -22 0: R1=ctx() R10=fp0 ; int arg_tag_ctx_perf(void *ctx) @ verifier_global_subprogs.c:271 0: (bf) r6 = r1 ; R1=ctx() R6=ctx() ; return subprog_ctx_tag(ctx) + @ verifier_global_subprogs.c:273 1: (85) call pc+13 Func#1 ('subprog_ctx_tag') is global and assumed valid. 2: R0=scalar() 2: (bc) w7 = w0 ; R0=scalar() R7=scalar(smin=0,smax=umax=0xffffffff,var_off=(0x0; 0xffffffff)) ; perf_subprog_regs(ctx) + @ verifier_global_subprogs.c:274 3: (bf) r1 = r6 ; R1=ctx() R6=ctx() 4: (85) call pc+16 arg#0 should be `struct bpf_perf_event_data *` Caller passes invalid args into func#2 ('perf_subprog_regs') processed 5 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 ============= torvalds#514/14 verifier_global_subprogs/arg_tag_ctx_perf:FAIL Signed-off-by: Tony Ambardar <tony.ambardar@gmail.com>
guidosarducci
added a commit
to guidosarducci/linux
that referenced
this pull request
Oct 27, 2025
Use bpf_user_pt_regs_t for perf ctx arg to avoid below failures. This type previously added because "long" type in struct pt_regs on 32-bit arm evals to wrong size in 64-bit BPF VM, resulting in errors like: run_subtest:PASS:obj_open_mem 0 nsec libbpf: prog 'arg_tag_ctx_perf': BPF program load failed: -EINVAL libbpf: prog 'arg_tag_ctx_perf': failed to load: -EINVAL libbpf: failed to load object 'verifier_global_subprogs' run_subtest:FAIL:unexpected_load_failure unexpected error: -22 (errno 22) VERIFIER LOG: ============= func#0 @0 func#1 @15 func#2 @21 func#3 @23 func#4 @25 Live regs before insn: 0: .12345.... (bf) r6 = r1 1: .123456... (85) call pc+13 2: 0.23456... (bc) w7 = w0 3: ..234567.. (bf) r1 = r6 4: .1234567.. (85) call pc+16 5: 0.234567.. (bc) w8 = w0 6: ..2345678. (0c) w8 += w7 7: ..23456.8. (bf) r1 = r6 8: .123456.8. (85) call pc+14 9: 0.23456.8. (0c) w8 += w0 10: ..23456.8. (bf) r1 = r6 11: .12345..8. (85) call pc+13 12: 0.......8. (0c) w8 += w0 13: ........8. (bc) w0 = w8 14: 0......... (95) exit 15: .1........ (18) r2 = 0xdfc7d008 17: .12....... (b4) w3 = 1024 18: .123...... (b7) r4 = 0 19: .1234..... (85) call bpf_get_stack#67 20: 0......... (95) exit 21: .......... (b4) w0 = 0 22: 0......... (95) exit 23: .......... (b4) w0 = 0 24: 0......... (95) exit 25: .......... (b4) w0 = 0 26: 0......... (95) exit arg#0 reference type('UNKNOWN ') size cannot be determined: -22 0: R1=ctx() R10=fp0 ; int arg_tag_ctx_perf(void *ctx) @ verifier_global_subprogs.c:271 0: (bf) r6 = r1 ; R1=ctx() R6=ctx() ; return subprog_ctx_tag(ctx) + @ verifier_global_subprogs.c:273 1: (85) call pc+13 Func#1 ('subprog_ctx_tag') is global and assumed valid. 2: R0=scalar() 2: (bc) w7 = w0 ; R0=scalar() R7=scalar(smin=0,smax=umax=0xffffffff,var_off=(0x0; 0xffffffff)) ; perf_subprog_regs(ctx) + @ verifier_global_subprogs.c:274 3: (bf) r1 = r6 ; R1=ctx() R6=ctx() 4: (85) call pc+16 arg#0 should be `struct bpf_perf_event_data *` Caller passes invalid args into func#2 ('perf_subprog_regs') processed 5 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 ============= torvalds#514/14 verifier_global_subprogs/arg_tag_ctx_perf:FAIL Signed-off-by: Tony Ambardar <tony.ambardar@gmail.com>
guidosarducci
added a commit
to guidosarducci/linux
that referenced
this pull request
Oct 27, 2025
Use bpf_user_pt_regs_t for perf ctx arg to avoid below failures. This type previously added because "long" type in struct pt_regs on 32-bit arm evals to wrong size in 64-bit BPF VM, resulting in errors like: run_subtest:PASS:obj_open_mem 0 nsec libbpf: prog 'arg_tag_ctx_perf': BPF program load failed: -EINVAL libbpf: prog 'arg_tag_ctx_perf': failed to load: -EINVAL libbpf: failed to load object 'verifier_global_subprogs' run_subtest:FAIL:unexpected_load_failure unexpected error: -22 (errno 22) VERIFIER LOG: ============= func#0 @0 func#1 @15 func#2 @21 func#3 @23 func#4 @25 Live regs before insn: 0: .12345.... (bf) r6 = r1 1: .123456... (85) call pc+13 2: 0.23456... (bc) w7 = w0 3: ..234567.. (bf) r1 = r6 4: .1234567.. (85) call pc+16 5: 0.234567.. (bc) w8 = w0 6: ..2345678. (0c) w8 += w7 7: ..23456.8. (bf) r1 = r6 8: .123456.8. (85) call pc+14 9: 0.23456.8. (0c) w8 += w0 10: ..23456.8. (bf) r1 = r6 11: .12345..8. (85) call pc+13 12: 0.......8. (0c) w8 += w0 13: ........8. (bc) w0 = w8 14: 0......... (95) exit 15: .1........ (18) r2 = 0xdfc7d008 17: .12....... (b4) w3 = 1024 18: .123...... (b7) r4 = 0 19: .1234..... (85) call bpf_get_stack#67 20: 0......... (95) exit 21: .......... (b4) w0 = 0 22: 0......... (95) exit 23: .......... (b4) w0 = 0 24: 0......... (95) exit 25: .......... (b4) w0 = 0 26: 0......... (95) exit arg#0 reference type('UNKNOWN ') size cannot be determined: -22 0: R1=ctx() R10=fp0 ; int arg_tag_ctx_perf(void *ctx) @ verifier_global_subprogs.c:271 0: (bf) r6 = r1 ; R1=ctx() R6=ctx() ; return subprog_ctx_tag(ctx) + @ verifier_global_subprogs.c:273 1: (85) call pc+13 Func#1 ('subprog_ctx_tag') is global and assumed valid. 2: R0=scalar() 2: (bc) w7 = w0 ; R0=scalar() R7=scalar(smin=0,smax=umax=0xffffffff,var_off=(0x0; 0xffffffff)) ; perf_subprog_regs(ctx) + @ verifier_global_subprogs.c:274 3: (bf) r1 = r6 ; R1=ctx() R6=ctx() 4: (85) call pc+16 arg#0 should be `struct bpf_perf_event_data *` Caller passes invalid args into func#2 ('perf_subprog_regs') processed 5 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 ============= torvalds#514/14 verifier_global_subprogs/arg_tag_ctx_perf:FAIL Signed-off-by: Tony Ambardar <tony.ambardar@gmail.com>
guidosarducci
added a commit
to guidosarducci/linux
that referenced
this pull request
Oct 27, 2025
Use bpf_user_pt_regs_t for perf ctx arg to avoid below failures. This type previously added because "long" type in struct pt_regs on 32-bit arm evals to wrong size in 64-bit BPF VM, resulting in errors like: run_subtest:PASS:obj_open_mem 0 nsec libbpf: prog 'arg_tag_ctx_perf': BPF program load failed: -EINVAL libbpf: prog 'arg_tag_ctx_perf': failed to load: -EINVAL libbpf: failed to load object 'verifier_global_subprogs' run_subtest:FAIL:unexpected_load_failure unexpected error: -22 (errno 22) VERIFIER LOG: ============= func#0 @0 func#1 @15 func#2 @21 func#3 @23 func#4 @25 Live regs before insn: 0: .12345.... (bf) r6 = r1 1: .123456... (85) call pc+13 2: 0.23456... (bc) w7 = w0 3: ..234567.. (bf) r1 = r6 4: .1234567.. (85) call pc+16 5: 0.234567.. (bc) w8 = w0 6: ..2345678. (0c) w8 += w7 7: ..23456.8. (bf) r1 = r6 8: .123456.8. (85) call pc+14 9: 0.23456.8. (0c) w8 += w0 10: ..23456.8. (bf) r1 = r6 11: .12345..8. (85) call pc+13 12: 0.......8. (0c) w8 += w0 13: ........8. (bc) w0 = w8 14: 0......... (95) exit 15: .1........ (18) r2 = 0xdfc7d008 17: .12....... (b4) w3 = 1024 18: .123...... (b7) r4 = 0 19: .1234..... (85) call bpf_get_stack#67 20: 0......... (95) exit 21: .......... (b4) w0 = 0 22: 0......... (95) exit 23: .......... (b4) w0 = 0 24: 0......... (95) exit 25: .......... (b4) w0 = 0 26: 0......... (95) exit arg#0 reference type('UNKNOWN ') size cannot be determined: -22 0: R1=ctx() R10=fp0 ; int arg_tag_ctx_perf(void *ctx) @ verifier_global_subprogs.c:271 0: (bf) r6 = r1 ; R1=ctx() R6=ctx() ; return subprog_ctx_tag(ctx) + @ verifier_global_subprogs.c:273 1: (85) call pc+13 Func#1 ('subprog_ctx_tag') is global and assumed valid. 2: R0=scalar() 2: (bc) w7 = w0 ; R0=scalar() R7=scalar(smin=0,smax=umax=0xffffffff,var_off=(0x0; 0xffffffff)) ; perf_subprog_regs(ctx) + @ verifier_global_subprogs.c:274 3: (bf) r1 = r6 ; R1=ctx() R6=ctx() 4: (85) call pc+16 arg#0 should be `struct bpf_perf_event_data *` Caller passes invalid args into func#2 ('perf_subprog_regs') processed 5 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 ============= torvalds#514/14 verifier_global_subprogs/arg_tag_ctx_perf:FAIL Signed-off-by: Tony Ambardar <tony.ambardar@gmail.com>
guidosarducci
added a commit
to guidosarducci/linux
that referenced
this pull request
Oct 27, 2025
Use bpf_user_pt_regs_t for perf ctx arg to avoid below failures. This type previously added because "long" type in struct pt_regs on 32-bit arm evals to wrong size in 64-bit BPF VM, resulting in errors like: run_subtest:PASS:obj_open_mem 0 nsec libbpf: prog 'arg_tag_ctx_perf': BPF program load failed: -EINVAL libbpf: prog 'arg_tag_ctx_perf': failed to load: -EINVAL libbpf: failed to load object 'verifier_global_subprogs' run_subtest:FAIL:unexpected_load_failure unexpected error: -22 (errno 22) VERIFIER LOG: ============= func#0 @0 func#1 @15 func#2 @21 func#3 @23 func#4 @25 Live regs before insn: 0: .12345.... (bf) r6 = r1 1: .123456... (85) call pc+13 2: 0.23456... (bc) w7 = w0 3: ..234567.. (bf) r1 = r6 4: .1234567.. (85) call pc+16 5: 0.234567.. (bc) w8 = w0 6: ..2345678. (0c) w8 += w7 7: ..23456.8. (bf) r1 = r6 8: .123456.8. (85) call pc+14 9: 0.23456.8. (0c) w8 += w0 10: ..23456.8. (bf) r1 = r6 11: .12345..8. (85) call pc+13 12: 0.......8. (0c) w8 += w0 13: ........8. (bc) w0 = w8 14: 0......... (95) exit 15: .1........ (18) r2 = 0xdfc7d008 17: .12....... (b4) w3 = 1024 18: .123...... (b7) r4 = 0 19: .1234..... (85) call bpf_get_stack#67 20: 0......... (95) exit 21: .......... (b4) w0 = 0 22: 0......... (95) exit 23: .......... (b4) w0 = 0 24: 0......... (95) exit 25: .......... (b4) w0 = 0 26: 0......... (95) exit arg#0 reference type('UNKNOWN ') size cannot be determined: -22 0: R1=ctx() R10=fp0 ; int arg_tag_ctx_perf(void *ctx) @ verifier_global_subprogs.c:271 0: (bf) r6 = r1 ; R1=ctx() R6=ctx() ; return subprog_ctx_tag(ctx) + @ verifier_global_subprogs.c:273 1: (85) call pc+13 Func#1 ('subprog_ctx_tag') is global and assumed valid. 2: R0=scalar() 2: (bc) w7 = w0 ; R0=scalar() R7=scalar(smin=0,smax=umax=0xffffffff,var_off=(0x0; 0xffffffff)) ; perf_subprog_regs(ctx) + @ verifier_global_subprogs.c:274 3: (bf) r1 = r6 ; R1=ctx() R6=ctx() 4: (85) call pc+16 arg#0 should be `struct bpf_perf_event_data *` Caller passes invalid args into func#2 ('perf_subprog_regs') processed 5 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 ============= torvalds#514/14 verifier_global_subprogs/arg_tag_ctx_perf:FAIL Signed-off-by: Tony Ambardar <tony.ambardar@gmail.com>
guidosarducci
added a commit
to guidosarducci/linux
that referenced
this pull request
Oct 28, 2025
Use bpf_user_pt_regs_t for perf ctx arg to avoid below failures. This type previously added because "long" type in struct pt_regs on 32-bit arm evals to wrong size in 64-bit BPF VM, resulting in errors like: run_subtest:PASS:obj_open_mem 0 nsec libbpf: prog 'arg_tag_ctx_perf': BPF program load failed: -EINVAL libbpf: prog 'arg_tag_ctx_perf': failed to load: -EINVAL libbpf: failed to load object 'verifier_global_subprogs' run_subtest:FAIL:unexpected_load_failure unexpected error: -22 (errno 22) VERIFIER LOG: ============= func#0 @0 func#1 @15 func#2 @21 func#3 @23 func#4 @25 Live regs before insn: 0: .12345.... (bf) r6 = r1 1: .123456... (85) call pc+13 2: 0.23456... (bc) w7 = w0 3: ..234567.. (bf) r1 = r6 4: .1234567.. (85) call pc+16 5: 0.234567.. (bc) w8 = w0 6: ..2345678. (0c) w8 += w7 7: ..23456.8. (bf) r1 = r6 8: .123456.8. (85) call pc+14 9: 0.23456.8. (0c) w8 += w0 10: ..23456.8. (bf) r1 = r6 11: .12345..8. (85) call pc+13 12: 0.......8. (0c) w8 += w0 13: ........8. (bc) w0 = w8 14: 0......... (95) exit 15: .1........ (18) r2 = 0xdfc7d008 17: .12....... (b4) w3 = 1024 18: .123...... (b7) r4 = 0 19: .1234..... (85) call bpf_get_stack#67 20: 0......... (95) exit 21: .......... (b4) w0 = 0 22: 0......... (95) exit 23: .......... (b4) w0 = 0 24: 0......... (95) exit 25: .......... (b4) w0 = 0 26: 0......... (95) exit arg#0 reference type('UNKNOWN ') size cannot be determined: -22 0: R1=ctx() R10=fp0 ; int arg_tag_ctx_perf(void *ctx) @ verifier_global_subprogs.c:271 0: (bf) r6 = r1 ; R1=ctx() R6=ctx() ; return subprog_ctx_tag(ctx) + @ verifier_global_subprogs.c:273 1: (85) call pc+13 Func#1 ('subprog_ctx_tag') is global and assumed valid. 2: R0=scalar() 2: (bc) w7 = w0 ; R0=scalar() R7=scalar(smin=0,smax=umax=0xffffffff,var_off=(0x0; 0xffffffff)) ; perf_subprog_regs(ctx) + @ verifier_global_subprogs.c:274 3: (bf) r1 = r6 ; R1=ctx() R6=ctx() 4: (85) call pc+16 arg#0 should be `struct bpf_perf_event_data *` Caller passes invalid args into func#2 ('perf_subprog_regs') processed 5 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 ============= torvalds#514/14 verifier_global_subprogs/arg_tag_ctx_perf:FAIL Signed-off-by: Tony Ambardar <tony.ambardar@gmail.com>
intel-lab-lkp
pushed a commit
to intel-lab-lkp/linux
that referenced
this pull request
Oct 29, 2025
smbdirect_public.h contains functions which will be still be eported when we move to an smbdirect.ko. For now this uses the SMBDIRECT_USE_INLINE_C_FILES code path and marks all function as '__maybe_unused static', but this will make further changes easier. Note this generates the following things from checkpatch.pl, so I passed --ignore=FILE_PATH_CHANGES,EXPORT_SYMBOL,COMPLEX_MACRO ERROR: Macros with complex values should be enclosed in parentheses torvalds#514: FILE: fs/smb/common/smbdirect/smbdirect_public.h:18: +#define __SMBDIRECT_PUBLIC__ __maybe_unused static WARNING: EXPORT_SYMBOL(foo); should immediately follow its function/variable torvalds#515: FILE: fs/smb/common/smbdirect/smbdirect_public.h:19: +#define __SMBDIRECT_EXPORT_SYMBOL__(__sym) WARNING: EXPORT_SYMBOL(foo); should immediately follow its function/variable torvalds#518: FILE: fs/smb/common/smbdirect/smbdirect_public.h:22: +#define __SMBDIRECT_EXPORT_SYMBOL__(__sym) EXPORT_SYMBOL_FOR_MODULES(__sym, "cifs,ksmbd") This is exactly what we want here, so we should ignore the checkpatch.pl problems. Cc: Steve French <smfrench@gmail.com> Cc: Tom Talpey <tom@talpey.com> Cc: Long Li <longli@microsoft.com> Cc: Namjae Jeon <linkinjeon@kernel.org> Cc: linux-cifs@vger.kernel.org Cc: samba-technical@lists.samba.org Signed-off-by: Stefan Metzmacher <metze@samba.org>
guidosarducci
added a commit
to guidosarducci/linux
that referenced
this pull request
Oct 30, 2025
Use bpf_user_pt_regs_t for perf ctx arg to avoid below failures. This type previously added because "long" type in struct pt_regs on 32-bit arm evals to wrong size in 64-bit BPF VM, resulting in errors like: run_subtest:PASS:obj_open_mem 0 nsec libbpf: prog 'arg_tag_ctx_perf': BPF program load failed: -EINVAL libbpf: prog 'arg_tag_ctx_perf': failed to load: -EINVAL libbpf: failed to load object 'verifier_global_subprogs' run_subtest:FAIL:unexpected_load_failure unexpected error: -22 (errno 22) VERIFIER LOG: ============= func#0 @0 func#1 @15 func#2 @21 func#3 @23 func#4 @25 Live regs before insn: 0: .12345.... (bf) r6 = r1 1: .123456... (85) call pc+13 2: 0.23456... (bc) w7 = w0 3: ..234567.. (bf) r1 = r6 4: .1234567.. (85) call pc+16 5: 0.234567.. (bc) w8 = w0 6: ..2345678. (0c) w8 += w7 7: ..23456.8. (bf) r1 = r6 8: .123456.8. (85) call pc+14 9: 0.23456.8. (0c) w8 += w0 10: ..23456.8. (bf) r1 = r6 11: .12345..8. (85) call pc+13 12: 0.......8. (0c) w8 += w0 13: ........8. (bc) w0 = w8 14: 0......... (95) exit 15: .1........ (18) r2 = 0xdfc7d008 17: .12....... (b4) w3 = 1024 18: .123...... (b7) r4 = 0 19: .1234..... (85) call bpf_get_stack#67 20: 0......... (95) exit 21: .......... (b4) w0 = 0 22: 0......... (95) exit 23: .......... (b4) w0 = 0 24: 0......... (95) exit 25: .......... (b4) w0 = 0 26: 0......... (95) exit arg#0 reference type('UNKNOWN ') size cannot be determined: -22 0: R1=ctx() R10=fp0 ; int arg_tag_ctx_perf(void *ctx) @ verifier_global_subprogs.c:271 0: (bf) r6 = r1 ; R1=ctx() R6=ctx() ; return subprog_ctx_tag(ctx) + @ verifier_global_subprogs.c:273 1: (85) call pc+13 Func#1 ('subprog_ctx_tag') is global and assumed valid. 2: R0=scalar() 2: (bc) w7 = w0 ; R0=scalar() R7=scalar(smin=0,smax=umax=0xffffffff,var_off=(0x0; 0xffffffff)) ; perf_subprog_regs(ctx) + @ verifier_global_subprogs.c:274 3: (bf) r1 = r6 ; R1=ctx() R6=ctx() 4: (85) call pc+16 arg#0 should be `struct bpf_perf_event_data *` Caller passes invalid args into func#2 ('perf_subprog_regs') processed 5 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 ============= torvalds#514/14 verifier_global_subprogs/arg_tag_ctx_perf:FAIL Signed-off-by: Tony Ambardar <tony.ambardar@gmail.com>
guidosarducci
added a commit
to guidosarducci/linux
that referenced
this pull request
Nov 3, 2025
Use bpf_user_pt_regs_t for perf ctx arg to avoid below failures. This type previously added because "long" type in struct pt_regs on 32-bit arm evals to wrong size in 64-bit BPF VM, resulting in errors like: run_subtest:PASS:obj_open_mem 0 nsec libbpf: prog 'arg_tag_ctx_perf': BPF program load failed: -EINVAL libbpf: prog 'arg_tag_ctx_perf': failed to load: -EINVAL libbpf: failed to load object 'verifier_global_subprogs' run_subtest:FAIL:unexpected_load_failure unexpected error: -22 (errno 22) VERIFIER LOG: ============= func#0 @0 func#1 @15 func#2 @21 func#3 @23 func#4 @25 Live regs before insn: 0: .12345.... (bf) r6 = r1 1: .123456... (85) call pc+13 2: 0.23456... (bc) w7 = w0 3: ..234567.. (bf) r1 = r6 4: .1234567.. (85) call pc+16 5: 0.234567.. (bc) w8 = w0 6: ..2345678. (0c) w8 += w7 7: ..23456.8. (bf) r1 = r6 8: .123456.8. (85) call pc+14 9: 0.23456.8. (0c) w8 += w0 10: ..23456.8. (bf) r1 = r6 11: .12345..8. (85) call pc+13 12: 0.......8. (0c) w8 += w0 13: ........8. (bc) w0 = w8 14: 0......... (95) exit 15: .1........ (18) r2 = 0xdfc7d008 17: .12....... (b4) w3 = 1024 18: .123...... (b7) r4 = 0 19: .1234..... (85) call bpf_get_stack#67 20: 0......... (95) exit 21: .......... (b4) w0 = 0 22: 0......... (95) exit 23: .......... (b4) w0 = 0 24: 0......... (95) exit 25: .......... (b4) w0 = 0 26: 0......... (95) exit arg#0 reference type('UNKNOWN ') size cannot be determined: -22 0: R1=ctx() R10=fp0 ; int arg_tag_ctx_perf(void *ctx) @ verifier_global_subprogs.c:271 0: (bf) r6 = r1 ; R1=ctx() R6=ctx() ; return subprog_ctx_tag(ctx) + @ verifier_global_subprogs.c:273 1: (85) call pc+13 Func#1 ('subprog_ctx_tag') is global and assumed valid. 2: R0=scalar() 2: (bc) w7 = w0 ; R0=scalar() R7=scalar(smin=0,smax=umax=0xffffffff,var_off=(0x0; 0xffffffff)) ; perf_subprog_regs(ctx) + @ verifier_global_subprogs.c:274 3: (bf) r1 = r6 ; R1=ctx() R6=ctx() 4: (85) call pc+16 arg#0 should be `struct bpf_perf_event_data *` Caller passes invalid args into func#2 ('perf_subprog_regs') processed 5 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 ============= torvalds#514/14 verifier_global_subprogs/arg_tag_ctx_perf:FAIL Signed-off-by: Tony Ambardar <tony.ambardar@gmail.com>
guidosarducci
added a commit
to guidosarducci/linux
that referenced
this pull request
Nov 5, 2025
Use bpf_user_pt_regs_t for perf ctx arg to avoid below failures. This type previously added because "long" type in struct pt_regs on 32-bit arm evals to wrong size in 64-bit BPF VM, resulting in errors like: run_subtest:PASS:obj_open_mem 0 nsec libbpf: prog 'arg_tag_ctx_perf': BPF program load failed: -EINVAL libbpf: prog 'arg_tag_ctx_perf': failed to load: -EINVAL libbpf: failed to load object 'verifier_global_subprogs' run_subtest:FAIL:unexpected_load_failure unexpected error: -22 (errno 22) VERIFIER LOG: ============= func#0 @0 func#1 @15 func#2 @21 func#3 @23 func#4 @25 Live regs before insn: 0: .12345.... (bf) r6 = r1 1: .123456... (85) call pc+13 2: 0.23456... (bc) w7 = w0 3: ..234567.. (bf) r1 = r6 4: .1234567.. (85) call pc+16 5: 0.234567.. (bc) w8 = w0 6: ..2345678. (0c) w8 += w7 7: ..23456.8. (bf) r1 = r6 8: .123456.8. (85) call pc+14 9: 0.23456.8. (0c) w8 += w0 10: ..23456.8. (bf) r1 = r6 11: .12345..8. (85) call pc+13 12: 0.......8. (0c) w8 += w0 13: ........8. (bc) w0 = w8 14: 0......... (95) exit 15: .1........ (18) r2 = 0xdfc7d008 17: .12....... (b4) w3 = 1024 18: .123...... (b7) r4 = 0 19: .1234..... (85) call bpf_get_stack#67 20: 0......... (95) exit 21: .......... (b4) w0 = 0 22: 0......... (95) exit 23: .......... (b4) w0 = 0 24: 0......... (95) exit 25: .......... (b4) w0 = 0 26: 0......... (95) exit arg#0 reference type('UNKNOWN ') size cannot be determined: -22 0: R1=ctx() R10=fp0 ; int arg_tag_ctx_perf(void *ctx) @ verifier_global_subprogs.c:271 0: (bf) r6 = r1 ; R1=ctx() R6=ctx() ; return subprog_ctx_tag(ctx) + @ verifier_global_subprogs.c:273 1: (85) call pc+13 Func#1 ('subprog_ctx_tag') is global and assumed valid. 2: R0=scalar() 2: (bc) w7 = w0 ; R0=scalar() R7=scalar(smin=0,smax=umax=0xffffffff,var_off=(0x0; 0xffffffff)) ; perf_subprog_regs(ctx) + @ verifier_global_subprogs.c:274 3: (bf) r1 = r6 ; R1=ctx() R6=ctx() 4: (85) call pc+16 arg#0 should be `struct bpf_perf_event_data *` Caller passes invalid args into func#2 ('perf_subprog_regs') processed 5 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 ============= torvalds#514/14 verifier_global_subprogs/arg_tag_ctx_perf:FAIL Signed-off-by: Tony Ambardar <tony.ambardar@gmail.com>
guidosarducci
added a commit
to guidosarducci/linux
that referenced
this pull request
Nov 5, 2025
Use bpf_user_pt_regs_t for perf ctx arg to avoid below failures. This type previously added because "long" type in struct pt_regs on 32-bit arm evals to wrong size in 64-bit BPF VM, resulting in errors like: run_subtest:PASS:obj_open_mem 0 nsec libbpf: prog 'arg_tag_ctx_perf': BPF program load failed: -EINVAL libbpf: prog 'arg_tag_ctx_perf': failed to load: -EINVAL libbpf: failed to load object 'verifier_global_subprogs' run_subtest:FAIL:unexpected_load_failure unexpected error: -22 (errno 22) VERIFIER LOG: ============= func#0 @0 func#1 @15 func#2 @21 func#3 @23 func#4 @25 Live regs before insn: 0: .12345.... (bf) r6 = r1 1: .123456... (85) call pc+13 2: 0.23456... (bc) w7 = w0 3: ..234567.. (bf) r1 = r6 4: .1234567.. (85) call pc+16 5: 0.234567.. (bc) w8 = w0 6: ..2345678. (0c) w8 += w7 7: ..23456.8. (bf) r1 = r6 8: .123456.8. (85) call pc+14 9: 0.23456.8. (0c) w8 += w0 10: ..23456.8. (bf) r1 = r6 11: .12345..8. (85) call pc+13 12: 0.......8. (0c) w8 += w0 13: ........8. (bc) w0 = w8 14: 0......... (95) exit 15: .1........ (18) r2 = 0xdfc7d008 17: .12....... (b4) w3 = 1024 18: .123...... (b7) r4 = 0 19: .1234..... (85) call bpf_get_stack#67 20: 0......... (95) exit 21: .......... (b4) w0 = 0 22: 0......... (95) exit 23: .......... (b4) w0 = 0 24: 0......... (95) exit 25: .......... (b4) w0 = 0 26: 0......... (95) exit arg#0 reference type('UNKNOWN ') size cannot be determined: -22 0: R1=ctx() R10=fp0 ; int arg_tag_ctx_perf(void *ctx) @ verifier_global_subprogs.c:271 0: (bf) r6 = r1 ; R1=ctx() R6=ctx() ; return subprog_ctx_tag(ctx) + @ verifier_global_subprogs.c:273 1: (85) call pc+13 Func#1 ('subprog_ctx_tag') is global and assumed valid. 2: R0=scalar() 2: (bc) w7 = w0 ; R0=scalar() R7=scalar(smin=0,smax=umax=0xffffffff,var_off=(0x0; 0xffffffff)) ; perf_subprog_regs(ctx) + @ verifier_global_subprogs.c:274 3: (bf) r1 = r6 ; R1=ctx() R6=ctx() 4: (85) call pc+16 arg#0 should be `struct bpf_perf_event_data *` Caller passes invalid args into func#2 ('perf_subprog_regs') processed 5 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 ============= torvalds#514/14 verifier_global_subprogs/arg_tag_ctx_perf:FAIL Signed-off-by: Tony Ambardar <tony.ambardar@gmail.com>
guidosarducci
added a commit
to guidosarducci/linux
that referenced
this pull request
Nov 7, 2025
Use bpf_user_pt_regs_t for perf ctx arg to avoid below failures. This type previously added because "long" type in struct pt_regs on 32-bit arm evals to wrong size in 64-bit BPF VM, resulting in errors like: run_subtest:PASS:obj_open_mem 0 nsec libbpf: prog 'arg_tag_ctx_perf': BPF program load failed: -EINVAL libbpf: prog 'arg_tag_ctx_perf': failed to load: -EINVAL libbpf: failed to load object 'verifier_global_subprogs' run_subtest:FAIL:unexpected_load_failure unexpected error: -22 (errno 22) VERIFIER LOG: ============= func#0 @0 func#1 @15 func#2 @21 func#3 @23 func#4 @25 Live regs before insn: 0: .12345.... (bf) r6 = r1 1: .123456... (85) call pc+13 2: 0.23456... (bc) w7 = w0 3: ..234567.. (bf) r1 = r6 4: .1234567.. (85) call pc+16 5: 0.234567.. (bc) w8 = w0 6: ..2345678. (0c) w8 += w7 7: ..23456.8. (bf) r1 = r6 8: .123456.8. (85) call pc+14 9: 0.23456.8. (0c) w8 += w0 10: ..23456.8. (bf) r1 = r6 11: .12345..8. (85) call pc+13 12: 0.......8. (0c) w8 += w0 13: ........8. (bc) w0 = w8 14: 0......... (95) exit 15: .1........ (18) r2 = 0xdfc7d008 17: .12....... (b4) w3 = 1024 18: .123...... (b7) r4 = 0 19: .1234..... (85) call bpf_get_stack#67 20: 0......... (95) exit 21: .......... (b4) w0 = 0 22: 0......... (95) exit 23: .......... (b4) w0 = 0 24: 0......... (95) exit 25: .......... (b4) w0 = 0 26: 0......... (95) exit arg#0 reference type('UNKNOWN ') size cannot be determined: -22 0: R1=ctx() R10=fp0 ; int arg_tag_ctx_perf(void *ctx) @ verifier_global_subprogs.c:271 0: (bf) r6 = r1 ; R1=ctx() R6=ctx() ; return subprog_ctx_tag(ctx) + @ verifier_global_subprogs.c:273 1: (85) call pc+13 Func#1 ('subprog_ctx_tag') is global and assumed valid. 2: R0=scalar() 2: (bc) w7 = w0 ; R0=scalar() R7=scalar(smin=0,smax=umax=0xffffffff,var_off=(0x0; 0xffffffff)) ; perf_subprog_regs(ctx) + @ verifier_global_subprogs.c:274 3: (bf) r1 = r6 ; R1=ctx() R6=ctx() 4: (85) call pc+16 arg#0 should be `struct bpf_perf_event_data *` Caller passes invalid args into func#2 ('perf_subprog_regs') processed 5 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 ============= torvalds#514/14 verifier_global_subprogs/arg_tag_ctx_perf:FAIL Signed-off-by: Tony Ambardar <tony.ambardar@gmail.com>
guidosarducci
added a commit
to guidosarducci/linux
that referenced
this pull request
Nov 15, 2025
Use bpf_user_pt_regs_t for perf ctx arg to avoid below failures. This type previously added because "long" type in struct pt_regs on 32-bit arm evals to wrong size in 64-bit BPF VM, resulting in errors like: run_subtest:PASS:obj_open_mem 0 nsec libbpf: prog 'arg_tag_ctx_perf': BPF program load failed: -EINVAL libbpf: prog 'arg_tag_ctx_perf': failed to load: -EINVAL libbpf: failed to load object 'verifier_global_subprogs' run_subtest:FAIL:unexpected_load_failure unexpected error: -22 (errno 22) VERIFIER LOG: ============= func#0 @0 func#1 @15 func#2 @21 func#3 @23 func#4 @25 Live regs before insn: 0: .12345.... (bf) r6 = r1 1: .123456... (85) call pc+13 2: 0.23456... (bc) w7 = w0 3: ..234567.. (bf) r1 = r6 4: .1234567.. (85) call pc+16 5: 0.234567.. (bc) w8 = w0 6: ..2345678. (0c) w8 += w7 7: ..23456.8. (bf) r1 = r6 8: .123456.8. (85) call pc+14 9: 0.23456.8. (0c) w8 += w0 10: ..23456.8. (bf) r1 = r6 11: .12345..8. (85) call pc+13 12: 0.......8. (0c) w8 += w0 13: ........8. (bc) w0 = w8 14: 0......... (95) exit 15: .1........ (18) r2 = 0xdfc7d008 17: .12....... (b4) w3 = 1024 18: .123...... (b7) r4 = 0 19: .1234..... (85) call bpf_get_stack#67 20: 0......... (95) exit 21: .......... (b4) w0 = 0 22: 0......... (95) exit 23: .......... (b4) w0 = 0 24: 0......... (95) exit 25: .......... (b4) w0 = 0 26: 0......... (95) exit arg#0 reference type('UNKNOWN ') size cannot be determined: -22 0: R1=ctx() R10=fp0 ; int arg_tag_ctx_perf(void *ctx) @ verifier_global_subprogs.c:271 0: (bf) r6 = r1 ; R1=ctx() R6=ctx() ; return subprog_ctx_tag(ctx) + @ verifier_global_subprogs.c:273 1: (85) call pc+13 Func#1 ('subprog_ctx_tag') is global and assumed valid. 2: R0=scalar() 2: (bc) w7 = w0 ; R0=scalar() R7=scalar(smin=0,smax=umax=0xffffffff,var_off=(0x0; 0xffffffff)) ; perf_subprog_regs(ctx) + @ verifier_global_subprogs.c:274 3: (bf) r1 = r6 ; R1=ctx() R6=ctx() 4: (85) call pc+16 arg#0 should be `struct bpf_perf_event_data *` Caller passes invalid args into func#2 ('perf_subprog_regs') processed 5 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 ============= torvalds#514/14 verifier_global_subprogs/arg_tag_ctx_perf:FAIL Signed-off-by: Tony Ambardar <tony.ambardar@gmail.com>
guidosarducci
added a commit
to guidosarducci/linux
that referenced
this pull request
Nov 16, 2025
Use bpf_user_pt_regs_t for perf ctx arg to avoid below failures. This type previously added because "long" type in struct pt_regs on 32-bit arm evals to wrong size in 64-bit BPF VM, resulting in errors like: run_subtest:PASS:obj_open_mem 0 nsec libbpf: prog 'arg_tag_ctx_perf': BPF program load failed: -EINVAL libbpf: prog 'arg_tag_ctx_perf': failed to load: -EINVAL libbpf: failed to load object 'verifier_global_subprogs' run_subtest:FAIL:unexpected_load_failure unexpected error: -22 (errno 22) VERIFIER LOG: ============= func#0 @0 func#1 @15 func#2 @21 func#3 @23 func#4 @25 Live regs before insn: 0: .12345.... (bf) r6 = r1 1: .123456... (85) call pc+13 2: 0.23456... (bc) w7 = w0 3: ..234567.. (bf) r1 = r6 4: .1234567.. (85) call pc+16 5: 0.234567.. (bc) w8 = w0 6: ..2345678. (0c) w8 += w7 7: ..23456.8. (bf) r1 = r6 8: .123456.8. (85) call pc+14 9: 0.23456.8. (0c) w8 += w0 10: ..23456.8. (bf) r1 = r6 11: .12345..8. (85) call pc+13 12: 0.......8. (0c) w8 += w0 13: ........8. (bc) w0 = w8 14: 0......... (95) exit 15: .1........ (18) r2 = 0xdfc7d008 17: .12....... (b4) w3 = 1024 18: .123...... (b7) r4 = 0 19: .1234..... (85) call bpf_get_stack#67 20: 0......... (95) exit 21: .......... (b4) w0 = 0 22: 0......... (95) exit 23: .......... (b4) w0 = 0 24: 0......... (95) exit 25: .......... (b4) w0 = 0 26: 0......... (95) exit arg#0 reference type('UNKNOWN ') size cannot be determined: -22 0: R1=ctx() R10=fp0 ; int arg_tag_ctx_perf(void *ctx) @ verifier_global_subprogs.c:271 0: (bf) r6 = r1 ; R1=ctx() R6=ctx() ; return subprog_ctx_tag(ctx) + @ verifier_global_subprogs.c:273 1: (85) call pc+13 Func#1 ('subprog_ctx_tag') is global and assumed valid. 2: R0=scalar() 2: (bc) w7 = w0 ; R0=scalar() R7=scalar(smin=0,smax=umax=0xffffffff,var_off=(0x0; 0xffffffff)) ; perf_subprog_regs(ctx) + @ verifier_global_subprogs.c:274 3: (bf) r1 = r6 ; R1=ctx() R6=ctx() 4: (85) call pc+16 arg#0 should be `struct bpf_perf_event_data *` Caller passes invalid args into func#2 ('perf_subprog_regs') processed 5 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 ============= torvalds#514/14 verifier_global_subprogs/arg_tag_ctx_perf:FAIL Signed-off-by: Tony Ambardar <tony.ambardar@gmail.com>
guidosarducci
added a commit
to guidosarducci/linux
that referenced
this pull request
Nov 20, 2025
Use bpf_user_pt_regs_t for perf ctx arg to avoid below failures. This type previously added because "long" type in struct pt_regs on 32-bit arm evals to wrong size in 64-bit BPF VM, resulting in errors like: run_subtest:PASS:obj_open_mem 0 nsec libbpf: prog 'arg_tag_ctx_perf': BPF program load failed: -EINVAL libbpf: prog 'arg_tag_ctx_perf': failed to load: -EINVAL libbpf: failed to load object 'verifier_global_subprogs' run_subtest:FAIL:unexpected_load_failure unexpected error: -22 (errno 22) VERIFIER LOG: ============= func#0 @0 func#1 @15 func#2 @21 func#3 @23 func#4 @25 Live regs before insn: 0: .12345.... (bf) r6 = r1 1: .123456... (85) call pc+13 2: 0.23456... (bc) w7 = w0 3: ..234567.. (bf) r1 = r6 4: .1234567.. (85) call pc+16 5: 0.234567.. (bc) w8 = w0 6: ..2345678. (0c) w8 += w7 7: ..23456.8. (bf) r1 = r6 8: .123456.8. (85) call pc+14 9: 0.23456.8. (0c) w8 += w0 10: ..23456.8. (bf) r1 = r6 11: .12345..8. (85) call pc+13 12: 0.......8. (0c) w8 += w0 13: ........8. (bc) w0 = w8 14: 0......... (95) exit 15: .1........ (18) r2 = 0xdfc7d008 17: .12....... (b4) w3 = 1024 18: .123...... (b7) r4 = 0 19: .1234..... (85) call bpf_get_stack#67 20: 0......... (95) exit 21: .......... (b4) w0 = 0 22: 0......... (95) exit 23: .......... (b4) w0 = 0 24: 0......... (95) exit 25: .......... (b4) w0 = 0 26: 0......... (95) exit arg#0 reference type('UNKNOWN ') size cannot be determined: -22 0: R1=ctx() R10=fp0 ; int arg_tag_ctx_perf(void *ctx) @ verifier_global_subprogs.c:271 0: (bf) r6 = r1 ; R1=ctx() R6=ctx() ; return subprog_ctx_tag(ctx) + @ verifier_global_subprogs.c:273 1: (85) call pc+13 Func#1 ('subprog_ctx_tag') is global and assumed valid. 2: R0=scalar() 2: (bc) w7 = w0 ; R0=scalar() R7=scalar(smin=0,smax=umax=0xffffffff,var_off=(0x0; 0xffffffff)) ; perf_subprog_regs(ctx) + @ verifier_global_subprogs.c:274 3: (bf) r1 = r6 ; R1=ctx() R6=ctx() 4: (85) call pc+16 arg#0 should be `struct bpf_perf_event_data *` Caller passes invalid args into func#2 ('perf_subprog_regs') processed 5 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 ============= torvalds#514/14 verifier_global_subprogs/arg_tag_ctx_perf:FAIL Signed-off-by: Tony Ambardar <tony.ambardar@gmail.com>
guidosarducci
added a commit
to guidosarducci/linux
that referenced
this pull request
Nov 22, 2025
Use bpf_user_pt_regs_t for perf ctx arg to avoid below failures. This type previously added because "long" type in struct pt_regs on 32-bit arm evals to wrong size in 64-bit BPF VM, resulting in errors like: run_subtest:PASS:obj_open_mem 0 nsec libbpf: prog 'arg_tag_ctx_perf': BPF program load failed: -EINVAL libbpf: prog 'arg_tag_ctx_perf': failed to load: -EINVAL libbpf: failed to load object 'verifier_global_subprogs' run_subtest:FAIL:unexpected_load_failure unexpected error: -22 (errno 22) VERIFIER LOG: ============= func#0 @0 func#1 @15 func#2 @21 func#3 @23 func#4 @25 Live regs before insn: 0: .12345.... (bf) r6 = r1 1: .123456... (85) call pc+13 2: 0.23456... (bc) w7 = w0 3: ..234567.. (bf) r1 = r6 4: .1234567.. (85) call pc+16 5: 0.234567.. (bc) w8 = w0 6: ..2345678. (0c) w8 += w7 7: ..23456.8. (bf) r1 = r6 8: .123456.8. (85) call pc+14 9: 0.23456.8. (0c) w8 += w0 10: ..23456.8. (bf) r1 = r6 11: .12345..8. (85) call pc+13 12: 0.......8. (0c) w8 += w0 13: ........8. (bc) w0 = w8 14: 0......... (95) exit 15: .1........ (18) r2 = 0xdfc7d008 17: .12....... (b4) w3 = 1024 18: .123...... (b7) r4 = 0 19: .1234..... (85) call bpf_get_stack#67 20: 0......... (95) exit 21: .......... (b4) w0 = 0 22: 0......... (95) exit 23: .......... (b4) w0 = 0 24: 0......... (95) exit 25: .......... (b4) w0 = 0 26: 0......... (95) exit arg#0 reference type('UNKNOWN ') size cannot be determined: -22 0: R1=ctx() R10=fp0 ; int arg_tag_ctx_perf(void *ctx) @ verifier_global_subprogs.c:271 0: (bf) r6 = r1 ; R1=ctx() R6=ctx() ; return subprog_ctx_tag(ctx) + @ verifier_global_subprogs.c:273 1: (85) call pc+13 Func#1 ('subprog_ctx_tag') is global and assumed valid. 2: R0=scalar() 2: (bc) w7 = w0 ; R0=scalar() R7=scalar(smin=0,smax=umax=0xffffffff,var_off=(0x0; 0xffffffff)) ; perf_subprog_regs(ctx) + @ verifier_global_subprogs.c:274 3: (bf) r1 = r6 ; R1=ctx() R6=ctx() 4: (85) call pc+16 arg#0 should be `struct bpf_perf_event_data *` Caller passes invalid args into func#2 ('perf_subprog_regs') processed 5 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 ============= torvalds#514/14 verifier_global_subprogs/arg_tag_ctx_perf:FAIL Signed-off-by: Tony Ambardar <tony.ambardar@gmail.com>
guidosarducci
added a commit
to guidosarducci/linux
that referenced
this pull request
Nov 23, 2025
Use bpf_user_pt_regs_t for perf ctx arg to avoid below failures. This type previously added because "long" type in struct pt_regs on 32-bit arm evals to wrong size in 64-bit BPF VM, resulting in errors like: run_subtest:PASS:obj_open_mem 0 nsec libbpf: prog 'arg_tag_ctx_perf': BPF program load failed: -EINVAL libbpf: prog 'arg_tag_ctx_perf': failed to load: -EINVAL libbpf: failed to load object 'verifier_global_subprogs' run_subtest:FAIL:unexpected_load_failure unexpected error: -22 (errno 22) VERIFIER LOG: ============= func#0 @0 func#1 @15 func#2 @21 func#3 @23 func#4 @25 Live regs before insn: 0: .12345.... (bf) r6 = r1 1: .123456... (85) call pc+13 2: 0.23456... (bc) w7 = w0 3: ..234567.. (bf) r1 = r6 4: .1234567.. (85) call pc+16 5: 0.234567.. (bc) w8 = w0 6: ..2345678. (0c) w8 += w7 7: ..23456.8. (bf) r1 = r6 8: .123456.8. (85) call pc+14 9: 0.23456.8. (0c) w8 += w0 10: ..23456.8. (bf) r1 = r6 11: .12345..8. (85) call pc+13 12: 0.......8. (0c) w8 += w0 13: ........8. (bc) w0 = w8 14: 0......... (95) exit 15: .1........ (18) r2 = 0xdfc7d008 17: .12....... (b4) w3 = 1024 18: .123...... (b7) r4 = 0 19: .1234..... (85) call bpf_get_stack#67 20: 0......... (95) exit 21: .......... (b4) w0 = 0 22: 0......... (95) exit 23: .......... (b4) w0 = 0 24: 0......... (95) exit 25: .......... (b4) w0 = 0 26: 0......... (95) exit arg#0 reference type('UNKNOWN ') size cannot be determined: -22 0: R1=ctx() R10=fp0 ; int arg_tag_ctx_perf(void *ctx) @ verifier_global_subprogs.c:271 0: (bf) r6 = r1 ; R1=ctx() R6=ctx() ; return subprog_ctx_tag(ctx) + @ verifier_global_subprogs.c:273 1: (85) call pc+13 Func#1 ('subprog_ctx_tag') is global and assumed valid. 2: R0=scalar() 2: (bc) w7 = w0 ; R0=scalar() R7=scalar(smin=0,smax=umax=0xffffffff,var_off=(0x0; 0xffffffff)) ; perf_subprog_regs(ctx) + @ verifier_global_subprogs.c:274 3: (bf) r1 = r6 ; R1=ctx() R6=ctx() 4: (85) call pc+16 arg#0 should be `struct bpf_perf_event_data *` Caller passes invalid args into func#2 ('perf_subprog_regs') processed 5 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 ============= torvalds#514/14 verifier_global_subprogs/arg_tag_ctx_perf:FAIL Signed-off-by: Tony Ambardar <tony.ambardar@gmail.com>
guidosarducci
added a commit
to guidosarducci/linux
that referenced
this pull request
Nov 23, 2025
Use bpf_user_pt_regs_t for perf ctx arg to avoid below failures. This type previously added because "long" type in struct pt_regs on 32-bit arm evals to wrong size in 64-bit BPF VM, resulting in errors like: run_subtest:PASS:obj_open_mem 0 nsec libbpf: prog 'arg_tag_ctx_perf': BPF program load failed: -EINVAL libbpf: prog 'arg_tag_ctx_perf': failed to load: -EINVAL libbpf: failed to load object 'verifier_global_subprogs' run_subtest:FAIL:unexpected_load_failure unexpected error: -22 (errno 22) VERIFIER LOG: ============= func#0 @0 func#1 @15 func#2 @21 func#3 @23 func#4 @25 Live regs before insn: 0: .12345.... (bf) r6 = r1 1: .123456... (85) call pc+13 2: 0.23456... (bc) w7 = w0 3: ..234567.. (bf) r1 = r6 4: .1234567.. (85) call pc+16 5: 0.234567.. (bc) w8 = w0 6: ..2345678. (0c) w8 += w7 7: ..23456.8. (bf) r1 = r6 8: .123456.8. (85) call pc+14 9: 0.23456.8. (0c) w8 += w0 10: ..23456.8. (bf) r1 = r6 11: .12345..8. (85) call pc+13 12: 0.......8. (0c) w8 += w0 13: ........8. (bc) w0 = w8 14: 0......... (95) exit 15: .1........ (18) r2 = 0xdfc7d008 17: .12....... (b4) w3 = 1024 18: .123...... (b7) r4 = 0 19: .1234..... (85) call bpf_get_stack#67 20: 0......... (95) exit 21: .......... (b4) w0 = 0 22: 0......... (95) exit 23: .......... (b4) w0 = 0 24: 0......... (95) exit 25: .......... (b4) w0 = 0 26: 0......... (95) exit arg#0 reference type('UNKNOWN ') size cannot be determined: -22 0: R1=ctx() R10=fp0 ; int arg_tag_ctx_perf(void *ctx) @ verifier_global_subprogs.c:271 0: (bf) r6 = r1 ; R1=ctx() R6=ctx() ; return subprog_ctx_tag(ctx) + @ verifier_global_subprogs.c:273 1: (85) call pc+13 Func#1 ('subprog_ctx_tag') is global and assumed valid. 2: R0=scalar() 2: (bc) w7 = w0 ; R0=scalar() R7=scalar(smin=0,smax=umax=0xffffffff,var_off=(0x0; 0xffffffff)) ; perf_subprog_regs(ctx) + @ verifier_global_subprogs.c:274 3: (bf) r1 = r6 ; R1=ctx() R6=ctx() 4: (85) call pc+16 arg#0 should be `struct bpf_perf_event_data *` Caller passes invalid args into func#2 ('perf_subprog_regs') processed 5 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 ============= torvalds#514/14 verifier_global_subprogs/arg_tag_ctx_perf:FAIL Signed-off-by: Tony Ambardar <tony.ambardar@gmail.com>
guidosarducci
added a commit
to guidosarducci/linux
that referenced
this pull request
Nov 23, 2025
Use bpf_user_pt_regs_t for perf ctx arg to avoid below failures. This type previously added because "long" type in struct pt_regs on 32-bit arm evals to wrong size in 64-bit BPF VM, resulting in errors like: run_subtest:PASS:obj_open_mem 0 nsec libbpf: prog 'arg_tag_ctx_perf': BPF program load failed: -EINVAL libbpf: prog 'arg_tag_ctx_perf': failed to load: -EINVAL libbpf: failed to load object 'verifier_global_subprogs' run_subtest:FAIL:unexpected_load_failure unexpected error: -22 (errno 22) VERIFIER LOG: ============= func#0 @0 func#1 @15 func#2 @21 func#3 @23 func#4 @25 Live regs before insn: 0: .12345.... (bf) r6 = r1 1: .123456... (85) call pc+13 2: 0.23456... (bc) w7 = w0 3: ..234567.. (bf) r1 = r6 4: .1234567.. (85) call pc+16 5: 0.234567.. (bc) w8 = w0 6: ..2345678. (0c) w8 += w7 7: ..23456.8. (bf) r1 = r6 8: .123456.8. (85) call pc+14 9: 0.23456.8. (0c) w8 += w0 10: ..23456.8. (bf) r1 = r6 11: .12345..8. (85) call pc+13 12: 0.......8. (0c) w8 += w0 13: ........8. (bc) w0 = w8 14: 0......... (95) exit 15: .1........ (18) r2 = 0xdfc7d008 17: .12....... (b4) w3 = 1024 18: .123...... (b7) r4 = 0 19: .1234..... (85) call bpf_get_stack#67 20: 0......... (95) exit 21: .......... (b4) w0 = 0 22: 0......... (95) exit 23: .......... (b4) w0 = 0 24: 0......... (95) exit 25: .......... (b4) w0 = 0 26: 0......... (95) exit arg#0 reference type('UNKNOWN ') size cannot be determined: -22 0: R1=ctx() R10=fp0 ; int arg_tag_ctx_perf(void *ctx) @ verifier_global_subprogs.c:271 0: (bf) r6 = r1 ; R1=ctx() R6=ctx() ; return subprog_ctx_tag(ctx) + @ verifier_global_subprogs.c:273 1: (85) call pc+13 Func#1 ('subprog_ctx_tag') is global and assumed valid. 2: R0=scalar() 2: (bc) w7 = w0 ; R0=scalar() R7=scalar(smin=0,smax=umax=0xffffffff,var_off=(0x0; 0xffffffff)) ; perf_subprog_regs(ctx) + @ verifier_global_subprogs.c:274 3: (bf) r1 = r6 ; R1=ctx() R6=ctx() 4: (85) call pc+16 arg#0 should be `struct bpf_perf_event_data *` Caller passes invalid args into func#2 ('perf_subprog_regs') processed 5 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 ============= torvalds#514/14 verifier_global_subprogs/arg_tag_ctx_perf:FAIL Signed-off-by: Tony Ambardar <tony.ambardar@gmail.com>
guidosarducci
added a commit
to guidosarducci/linux
that referenced
this pull request
Nov 25, 2025
Use bpf_user_pt_regs_t for perf ctx arg to avoid below failures. This type previously added because "long" type in struct pt_regs on 32-bit arm evals to wrong size in 64-bit BPF VM, resulting in errors like: run_subtest:PASS:obj_open_mem 0 nsec libbpf: prog 'arg_tag_ctx_perf': BPF program load failed: -EINVAL libbpf: prog 'arg_tag_ctx_perf': failed to load: -EINVAL libbpf: failed to load object 'verifier_global_subprogs' run_subtest:FAIL:unexpected_load_failure unexpected error: -22 (errno 22) VERIFIER LOG: ============= func#0 @0 func#1 @15 func#2 @21 func#3 @23 func#4 @25 Live regs before insn: 0: .12345.... (bf) r6 = r1 1: .123456... (85) call pc+13 2: 0.23456... (bc) w7 = w0 3: ..234567.. (bf) r1 = r6 4: .1234567.. (85) call pc+16 5: 0.234567.. (bc) w8 = w0 6: ..2345678. (0c) w8 += w7 7: ..23456.8. (bf) r1 = r6 8: .123456.8. (85) call pc+14 9: 0.23456.8. (0c) w8 += w0 10: ..23456.8. (bf) r1 = r6 11: .12345..8. (85) call pc+13 12: 0.......8. (0c) w8 += w0 13: ........8. (bc) w0 = w8 14: 0......... (95) exit 15: .1........ (18) r2 = 0xdfc7d008 17: .12....... (b4) w3 = 1024 18: .123...... (b7) r4 = 0 19: .1234..... (85) call bpf_get_stack#67 20: 0......... (95) exit 21: .......... (b4) w0 = 0 22: 0......... (95) exit 23: .......... (b4) w0 = 0 24: 0......... (95) exit 25: .......... (b4) w0 = 0 26: 0......... (95) exit arg#0 reference type('UNKNOWN ') size cannot be determined: -22 0: R1=ctx() R10=fp0 ; int arg_tag_ctx_perf(void *ctx) @ verifier_global_subprogs.c:271 0: (bf) r6 = r1 ; R1=ctx() R6=ctx() ; return subprog_ctx_tag(ctx) + @ verifier_global_subprogs.c:273 1: (85) call pc+13 Func#1 ('subprog_ctx_tag') is global and assumed valid. 2: R0=scalar() 2: (bc) w7 = w0 ; R0=scalar() R7=scalar(smin=0,smax=umax=0xffffffff,var_off=(0x0; 0xffffffff)) ; perf_subprog_regs(ctx) + @ verifier_global_subprogs.c:274 3: (bf) r1 = r6 ; R1=ctx() R6=ctx() 4: (85) call pc+16 arg#0 should be `struct bpf_perf_event_data *` Caller passes invalid args into func#2 ('perf_subprog_regs') processed 5 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 ============= torvalds#514/14 verifier_global_subprogs/arg_tag_ctx_perf:FAIL Signed-off-by: Tony Ambardar <tony.ambardar@gmail.com>
guidosarducci
added a commit
to guidosarducci/linux
that referenced
this pull request
Nov 26, 2025
Use bpf_user_pt_regs_t for perf ctx arg to avoid below failures. This type previously added because "long" type in struct pt_regs on 32-bit arm evals to wrong size in 64-bit BPF VM, resulting in errors like: run_subtest:PASS:obj_open_mem 0 nsec libbpf: prog 'arg_tag_ctx_perf': BPF program load failed: -EINVAL libbpf: prog 'arg_tag_ctx_perf': failed to load: -EINVAL libbpf: failed to load object 'verifier_global_subprogs' run_subtest:FAIL:unexpected_load_failure unexpected error: -22 (errno 22) VERIFIER LOG: ============= func#0 @0 func#1 @15 func#2 @21 func#3 @23 func#4 @25 Live regs before insn: 0: .12345.... (bf) r6 = r1 1: .123456... (85) call pc+13 2: 0.23456... (bc) w7 = w0 3: ..234567.. (bf) r1 = r6 4: .1234567.. (85) call pc+16 5: 0.234567.. (bc) w8 = w0 6: ..2345678. (0c) w8 += w7 7: ..23456.8. (bf) r1 = r6 8: .123456.8. (85) call pc+14 9: 0.23456.8. (0c) w8 += w0 10: ..23456.8. (bf) r1 = r6 11: .12345..8. (85) call pc+13 12: 0.......8. (0c) w8 += w0 13: ........8. (bc) w0 = w8 14: 0......... (95) exit 15: .1........ (18) r2 = 0xdfc7d008 17: .12....... (b4) w3 = 1024 18: .123...... (b7) r4 = 0 19: .1234..... (85) call bpf_get_stack#67 20: 0......... (95) exit 21: .......... (b4) w0 = 0 22: 0......... (95) exit 23: .......... (b4) w0 = 0 24: 0......... (95) exit 25: .......... (b4) w0 = 0 26: 0......... (95) exit arg#0 reference type('UNKNOWN ') size cannot be determined: -22 0: R1=ctx() R10=fp0 ; int arg_tag_ctx_perf(void *ctx) @ verifier_global_subprogs.c:271 0: (bf) r6 = r1 ; R1=ctx() R6=ctx() ; return subprog_ctx_tag(ctx) + @ verifier_global_subprogs.c:273 1: (85) call pc+13 Func#1 ('subprog_ctx_tag') is global and assumed valid. 2: R0=scalar() 2: (bc) w7 = w0 ; R0=scalar() R7=scalar(smin=0,smax=umax=0xffffffff,var_off=(0x0; 0xffffffff)) ; perf_subprog_regs(ctx) + @ verifier_global_subprogs.c:274 3: (bf) r1 = r6 ; R1=ctx() R6=ctx() 4: (85) call pc+16 arg#0 should be `struct bpf_perf_event_data *` Caller passes invalid args into func#2 ('perf_subprog_regs') processed 5 insns (limit 1000000) max_states_per_insn 0 total_states 0 peak_states 0 mark_read 0 ============= torvalds#514/14 verifier_global_subprogs/arg_tag_ctx_perf:FAIL Signed-off-by: Tony Ambardar <tony.ambardar@gmail.com>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
No description provided.