Skip to content
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

bpf: fix same insn cannot be used with different pointers in proxy.h #32169

Closed

Commits on Apr 24, 2024

  1. bpf: fix same insn cannot be used with different pointers in proxy.h

    With the following helm config enabled, Cilium Agent fails to load BPF programs.
    
    The error only occurs if verbose datapath logging is enabled.
    
    ```
    debug:
      enabled: true
      verbose: "datapath"
    bpf:
      tproxy: true
    ```
    
    error:
    
    ```
    ; sk = sk_lookup_udp(ctx, tuple, len, BPF_F_CURRENT_NETNS, 0);
    829: (bf) r1 = r6
    830: (b4) w3 = 36
    831: (b7) r4 = -1
    832: (b7) r5 = 0
    833: (85) call bpf_sk_lookup_udp#85
    last_idx 833 first_idx 827
    regs=8 stack=0 before 832: (b7) r5 = 0
    regs=8 stack=0 before 831: (b7) r4 = -1
    regs=8 stack=0 before 830: (b4) w3 = 36
    834: (b4) w7 = -178
    ; if (!sk)
    835: (15) if r0 == 0x0 goto pc+38
     R0_w=sock(id=0,ref_obj_id=29,off=0,imm=0) R6=ctx(id=0,off=0,imm=0) R7_w=inv4294967118 R8=inv(id=0,umax_value=4294967295,var_off=(0x0; 0xffffffff)) R9=inv(id=22,umax_value=65535,var_off=(0x0; 0xffff)) R10=fp0 fp-16=???mmmmm fp-24=mmmmmmmm fp-32=mmmmmmmm fp-40=mmmmmmmm fp-48=mmmmmmmm fp-72=????mmmm fp-80=mmmmmmmm fp-88=mmmmmmmm refs=29
    ;
    836: (61) r1 = *(u32 *)(r6 +16)
    837: (63) *(u32 *)(r10 -104) = r1
    838: (61) r7 = *(u32 *)(r0 +4)
    same insn cannot be used with different pointers
    processed 1261 insns (limit 1000000) max_states_per_insn 4 total_states 68 peak_states 67 mark_read 19
    ```
    
    This commit fixes this issue by extracting a variable `family`.
    
    Signed-off-by: Marco Hofstetter <marco.hofstetter@isovalent.com>
    mhofstetter committed Apr 24, 2024
    Configuration menu
    Copy the full SHA
    7e06dae View commit details
    Browse the repository at this point in the history