Re: [PATCH] selftests/bpf: Return true/false (not 1/0) from bool functions

From: Linkui Xiao
Date: Wed Jul 13 2022 - 21:56:34 EST


Thanks for your suggestion, I'll clean it up

On 7/13/22 23:55, sdf@xxxxxxxxxx wrote:
On 07/13, xiaolinkui wrote:
From: Linkui Xiao<xiaolinkui@xxxxxxxxxx>
                   ^ space here?

Return boolean values ("true" or "false") instead of 1 or 0 from bool
functions.  This fixes the following warnings from coccicheck:

tools/testing/selftests/bpf/progs/test_xdp_noinline.c:407:9-10: WARNING:
return of 0/1 in function 'decap_v4' with return type bool
tools/testing/selftests/bpf/progs/test_xdp_noinline.c:389:9-10: WARNING:
return of 0/1 in function 'decap_v6' with return type bool
tools/testing/selftests/bpf/progs/test_xdp_noinline.c:290:9-10: WARNING:
return of 0/1 in function 'encap_v6' with return type bool
tools/testing/selftests/bpf/progs/test_xdp_noinline.c:264:9-10: WARNING:
return of 0/1 in function 'parse_tcp' with return type bool
tools/testing/selftests/bpf/progs/test_xdp_noinline.c:242:9-10: WARNING:
return of 0/1 in function 'parse_udp' with return type bool

Generated by: scripts/coccinelle/misc/boolreturn.cocci

Signed-off-by: Linkui Xiao<xiaolinkui@xxxxxxxxxx>

This patch likely needs a resend with proper [PATCH bpf] or
[PATCH bpf-next] subject to end up in patchwork and to be picked up.

Take a look at Documentation/bpf/bpf_devel_QA.rst section "Q: How do I
indicate which tree (bpf vs. bpf-next) my patch should be applied to?".

Since that's a cleanup, you most likely want to target bpf-next.

---
  .../selftests/bpf/progs/test_xdp_noinline.c   | 30 +++++++++----------
  1 file changed, 15 insertions(+), 15 deletions(-)

diff --git a/tools/testing/selftests/bpf/progs/test_xdp_noinline.c b/tools/testing/selftests/bpf/progs/test_xdp_noinline.c
index 125d872d7981..ba48fcb98ab2 100644
--- a/tools/testing/selftests/bpf/progs/test_xdp_noinline.c
+++ b/tools/testing/selftests/bpf/progs/test_xdp_noinline.c
@@ -239,7 +239,7 @@ bool parse_udp(void *data, void *data_end,
      udp = data + off;

      if (udp + 1 > data_end)
-        return 0;
+        return false;
      if (!is_icmp) {
          pckt->flow.port16[0] = udp->source;
          pckt->flow.port16[1] = udp->dest;
@@ -247,7 +247,7 @@ bool parse_udp(void *data, void *data_end,
          pckt->flow.port16[0] = udp->dest;
          pckt->flow.port16[1] = udp->source;
      }
-    return 1;
+    return true;
  }

  static __attribute__ ((noinline))
@@ -261,7 +261,7 @@ bool parse_tcp(void *data, void *data_end,

      tcp = data + off;
      if (tcp + 1 > data_end)
-        return 0;
+        return false;
      if (tcp->syn)
          pckt->flags |= (1 << 1);
      if (!is_icmp) {
@@ -271,7 +271,7 @@ bool parse_tcp(void *data, void *data_end,
          pckt->flow.port16[0] = tcp->dest;
          pckt->flow.port16[1] = tcp->source;
      }
-    return 1;
+    return true;
  }

  static __attribute__ ((noinline))
@@ -287,7 +287,7 @@ bool encap_v6(struct xdp_md *xdp, struct ctl_value *cval,
      void *data;

      if (bpf_xdp_adjust_head(xdp, 0 - (int)sizeof(struct ipv6hdr)))
-        return 0;
+        return false;
      data = (void *)(long)xdp->data;
      data_end = (void *)(long)xdp->data_end;
      new_eth = data;
@@ -295,7 +295,7 @@ bool encap_v6(struct xdp_md *xdp, struct ctl_value *cval,
      old_eth = data + sizeof(struct ipv6hdr);
      if (new_eth + 1 > data_end ||
          old_eth + 1 > data_end || ip6h + 1 > data_end)
-        return 0;
+        return false;
      memcpy(new_eth->eth_dest, cval->mac, 6);
      memcpy(new_eth->eth_source, old_eth->eth_dest, 6);
      new_eth->eth_proto = 56710;
@@ -314,7 +314,7 @@ bool encap_v6(struct xdp_md *xdp, struct ctl_value *cval,
      ip6h->saddr.in6_u.u6_addr32[2] = 3;
      ip6h->saddr.in6_u.u6_addr32[3] = ip_suffix;
      memcpy(ip6h->daddr.in6_u.u6_addr32, dst->dstv6, 16);
-    return 1;
+    return true;
  }

  static __attribute__ ((noinline))
@@ -335,7 +335,7 @@ bool encap_v4(struct xdp_md *xdp, struct ctl_value *cval,
      ip_suffix <<= 15;
      ip_suffix ^= pckt->flow.src;
      if (bpf_xdp_adjust_head(xdp, 0 - (int)sizeof(struct iphdr)))
-        return 0;
+        return false;
      data = (void *)(long)xdp->data;
      data_end = (void *)(long)xdp->data_end;
      new_eth = data;
@@ -343,7 +343,7 @@ bool encap_v4(struct xdp_md *xdp, struct ctl_value *cval,
      old_eth = data + sizeof(struct iphdr);
      if (new_eth + 1 > data_end ||
          old_eth + 1 > data_end || iph + 1 > data_end)
-        return 0;
+        return false;
      memcpy(new_eth->eth_dest, cval->mac, 6);
      memcpy(new_eth->eth_source, old_eth->eth_dest, 6);
      new_eth->eth_proto = 8;
@@ -367,8 +367,8 @@ bool encap_v4(struct xdp_md *xdp, struct ctl_value *cval,
          csum += *next_iph_u16++;
      iph->check = ~((csum & 0xffff) + (csum >> 16));
      if (bpf_xdp_adjust_head(xdp, (int)sizeof(struct iphdr)))
-        return 0;
-    return 1;
+        return false;
+    return true;
  }

  static __attribute__ ((noinline))
@@ -386,10 +386,10 @@ bool decap_v6(struct xdp_md *xdp, void **data, void **data_end, bool inner_v4)
      else
          new_eth->eth_proto = 56710;
      if (bpf_xdp_adjust_head(xdp, (int)sizeof(struct ipv6hdr)))
-        return 0;
+        return false;
      *data = (void *)(long)xdp->data;
      *data_end = (void *)(long)xdp->data_end;
-    return 1;
+    return true;
  }

  static __attribute__ ((noinline))
@@ -404,10 +404,10 @@ bool decap_v4(struct xdp_md *xdp, void **data, void **data_end)
      memcpy(new_eth->eth_dest, old_eth->eth_dest, 6);
      new_eth->eth_proto = 8;
      if (bpf_xdp_adjust_head(xdp, (int)sizeof(struct iphdr)))
-        return 0;
+        return false;
      *data = (void *)(long)xdp->data;
      *data_end = (void *)(long)xdp->data_end;
-    return 1;
+    return true;
  }

  static __attribute__ ((noinline))
--
2.17.1