• Alexei Starovoitov's avatar
    bpf: Minor improvements for bpf_cmp. · 49c06547
    Alexei Starovoitov authored
    Few minor improvements for bpf_cmp() macro:
    . reduce number of args in __bpf_cmp()
    . rename NOFLIP to UNLIKELY
    . add a comment about 64-bit truncation in "i" constraint
    . use "ri" constraint for sizeof(rhs) <= 4
    . improve error message for bpf_cmp_likely()
    
    Before:
    progs/iters_task_vma.c:31:7: error: variable 'ret' is uninitialized when used here [-Werror,-Wuninitialized]
       31 |                 if (bpf_cmp_likely(seen, <==, 1000))
          |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ../bpf/bpf_experimental.h:325:3: note: expanded from macro 'bpf_cmp_likely'
      325 |                 ret;
          |                 ^~~
    progs/iters_task_vma.c:31:7: note: variable 'ret' is declared here
    ../bpf/bpf_experimental.h:310:3: note: expanded from macro 'bpf_cmp_likely'
      310 |                 bool ret;
          |                 ^
    
    After:
    progs/iters_task_vma.c:31:7: error: invalid operand for instruction
       31 |                 if (bpf_cmp_likely(seen, <==, 1000))
          |                     ^
    ../bpf/bpf_experimental.h:324:17: note: expanded from macro 'bpf_cmp_likely'
      324 |                         asm volatile("r0 " #OP " invalid compare");
          |                                      ^
    <inline asm>:1:5: note: instantiated into assembly here
        1 |         r0 <== invalid compare
          |            ^
    Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    Acked-by: default avatarYonghong Song <yonghong.song@linux.dev>
    Link: https://lore.kernel.org/bpf/20240112220134.71209-1-alexei.starovoitov@gmail.comSigned-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    49c06547
bpf_experimental.h 14.4 KB