Skip to content
  1. Dec 17, 2021
  2. Dec 15, 2021
  3. Dec 14, 2021
  4. Dec 13, 2021
  5. Dec 12, 2021
    • Alexei Starovoitov's avatar
      bpf: Silence coverity false positive warning. · f18a4997
      Alexei Starovoitov authored
      
      
      Coverity issued the following warning:
      6685            cands = bpf_core_add_cands(cands, main_btf, 1);
      6686            if (IS_ERR(cands))
      >>>     CID 1510300:    (RETURN_LOCAL)
      >>>     Returning pointer "cands" which points to local variable "local_cand".
      6687                    return cands;
      
      It's a false positive.
      Add ERR_CAST() to silence it.
      
      Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
      f18a4997
    • Jiapeng Chong's avatar
      bpf: Use kmemdup() to replace kmalloc + memcpy · 4674f210
      Jiapeng Chong authored
      
      
      Eliminate the follow coccicheck warning:
      
      ./kernel/bpf/btf.c:6537:13-20: WARNING opportunity for kmemdup.
      
      Reported-by: default avatarAbaci Robot <abaci@linux.alibaba.com>
      Signed-off-by: default avatarJiapeng Chong <jiapeng.chong@linux.alibaba.com>
      Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
      Link: https://lore.kernel.org/bpf/1639030882-92383-1-git-send-email-jiapeng.chong@linux.alibaba.com
      4674f210
    • Alexei Starovoitov's avatar
      Merge branch 'introduce bpf_strncmp() helper' · 84ef3f0b
      Alexei Starovoitov authored
      Hou Tao says:
      
      ====================
      
      Hi,
      
      The motivation for introducing bpf_strncmp() helper comes from
      two aspects:
      
      (1) clang doesn't always replace strncmp() automatically
      In tracing program, sometimes we need to using a home-made
      strncmp() to check whether or not the file name is expected.
      
      (2) the performance of home-made strncmp is not so good
      As shown in the benchmark in patch #4, the performance of
      bpf_strncmp() helper is 18% or 33% better than home-made strncmp()
      under x86-64 or arm64 when the compared string length is 64. When
      the string length grows to 4095, the performance win will be
      179% or 600% under x86-64 or arm64.
      
      Any comments are welcome.
      Regards,
      Tao
      
      Change Log:
      v2:
       * rebased on bpf-next
       * drop patch "selftests/bpf: factor out common helpers for benchmarks"
         (suggested by Andrii)
       * remove unnecessary inline functions and add comments for programs which
         will be rejected by verifier in patch 4 (suggested by Andrii)
       * rename variables used in will-fail programs to clarify the purposes.
      
      v1: https://lore.kernel.org/bpf/20211130142215.1237217-1-houtao1@huawei.com
       * change API to bpf_strncmp(const char *s1, u32 s1_sz, const char *s2)
       * add benchmark refactor and benchmark between bpf_strncmp() and strncmp()
      
      RFC: https://lore.kernel.org/bpf/20211106132822.1396621-1-houtao1@huawei.com/
      
      
      ====================
      
      Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
      84ef3f0b
    • Hou Tao's avatar
      selftests/bpf: Add test cases for bpf_strncmp() · bdbee82b
      Hou Tao authored
      
      
      Four test cases are added:
      (1) ensure the return value is expected
      (2) ensure no const string size is rejected
      (3) ensure writable target is rejected
      (4) ensure no null-terminated target is rejected
      
      Signed-off-by: default avatarHou Tao <houtao1@huawei.com>
      Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
      Link: https://lore.kernel.org/bpf/20211210141652.877186-5-houtao1@huawei.com
      bdbee82b
    • Hou Tao's avatar
      selftests/bpf: Add benchmark for bpf_strncmp() helper · 9c42652f
      Hou Tao authored
      
      
      Add benchmark to compare the performance between home-made strncmp()
      in bpf program and bpf_strncmp() helper. In summary, the performance
      win of bpf_strncmp() under x86-64 is greater than 18% when the compared
      string length is greater than 64, and is 179% when the length is 4095.
      Under arm64 the performance win is even bigger: 33% when the length
      is greater than 64 and 600% when the length is 4095.
      
      The following is the details:
      
      no-helper-X: use home-made strncmp() to compare X-sized string
      helper-Y: use bpf_strncmp() to compare Y-sized string
      
      Under x86-64:
      
      no-helper-1          3.504 ± 0.000M/s (drops 0.000 ± 0.000M/s)
      helper-1             3.347 ± 0.001M/s (drops 0.000 ± 0.000M/s)
      
      no-helper-8          3.357 ± 0.001M/s (drops 0.000 ± 0.000M/s)
      helper-8             3.307 ± 0.001M/s (drops 0.000 ± 0.000M/s)
      
      no-helper-32         3.064 ± 0.000M/s (drops 0.000 ± 0.000M/s)
      helper-32            3.253 ± 0.001M/s (drops 0.000 ± 0.000M/s)
      
      no-helper-64         2.563 ± 0.001M/s (drops 0.000 ± 0.000M/s)
      helper-64            3.040 ± 0.001M/s (drops 0.000 ± 0.000M/s)
      
      no-helper-128        1.975 ± 0.000M/s (drops 0.000 ± 0.000M/s)
      helper-128           2.641 ± 0.000M/s (drops 0.000 ± 0.000M/s)
      
      no-helper-512        0.759 ± 0.000M/s (drops 0.000 ± 0.000M/s)
      helper-512           1.574 ± 0.000M/s (drops 0.000 ± 0.000M/s)
      
      no-helper-2048       0.329 ± 0.000M/s (drops 0.000 ± 0.000M/s)
      helper-2048          0.602 ± 0.000M/s (drops 0.000 ± 0.000M/s)
      
      no-helper-4095       0.117 ± 0.000M/s (drops 0.000 ± 0.000M/s)
      helper-4095          0.327 ± 0.000M/s (drops 0.000 ± 0.000M/s)
      
      Under arm64:
      
      no-helper-1          2.806 ± 0.004M/s (drops 0.000 ± 0.000M/s)
      helper-1             2.819 ± 0.002M/s (drops 0.000 ± 0.000M/s)
      
      no-helper-8          2.797 ± 0.109M/s (drops 0.000 ± 0.000M/s)
      helper-8             2.786 ± 0.025M/s (drops 0.000 ± 0.000M/s)
      
      no-helper-32         2.399 ± 0.011M/s (drops 0.000 ± 0.000M/s)
      helper-32            2.703 ± 0.002M/s (drops 0.000 ± 0.000M/s)
      
      no-helper-64         2.020 ± 0.015M/s (drops 0.000 ± 0.000M/s)
      helper-64            2.702 ± 0.073M/s (drops 0.000 ± 0.000M/s)
      
      no-helper-128        1.604 ± 0.001M/s (drops 0.000 ± 0.000M/s)
      helper-128           2.516 ± 0.002M/s (drops 0.000 ± 0.000M/s)
      
      no-helper-512        0.699 ± 0.000M/s (drops 0.000 ± 0.000M/s)
      helper-512           2.106 ± 0.003M/s (drops 0.000 ± 0.000M/s)
      
      no-helper-2048       0.215 ± 0.000M/s (drops 0.000 ± 0.000M/s)
      helper-2048          1.223 ± 0.003M/s (drops 0.000 ± 0.000M/s)
      
      no-helper-4095       0.112 ± 0.000M/s (drops 0.000 ± 0.000M/s)
      helper-4095          0.796 ± 0.000M/s (drops 0.000 ± 0.000M/s)
      
      Signed-off-by: default avatarHou Tao <houtao1@huawei.com>
      Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
      Link: https://lore.kernel.org/bpf/20211210141652.877186-4-houtao1@huawei.com
      9c42652f