bpf: Fix check against plain integer v 'NULL'
authorBen Dooks <ben.dooks@sifive.com>
Thu, 14 Jul 2022 10:03:22 +0000 (11:03 +0100)
committerAndrii Nakryiko <andrii@kernel.org>
Fri, 15 Jul 2022 16:55:20 +0000 (09:55 -0700)
When checking with sparse, btf_show_type_value() is causing a
warning about checking integer vs NULL when the macro is passed
a pointer, due to the 'value != 0' check. Stop sparse complaining
about any type-casting by adding a cast to the typeof(value).

This fixes the following sparse warnings:

kernel/bpf/btf.c:2579:17: warning: Using plain integer as NULL pointer
kernel/bpf/btf.c:2581:17: warning: Using plain integer as NULL pointer
kernel/bpf/btf.c:3407:17: warning: Using plain integer as NULL pointer
kernel/bpf/btf.c:3758:9: warning: Using plain integer as NULL pointer

Signed-off-by: Ben Dooks <ben.dooks@sifive.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Acked-by: Yonghong Song <yhs@fb.com>
Link: https://lore.kernel.org/bpf/20220714100322.260467-1-ben.dooks@sifive.com
kernel/bpf/btf.c

index 4423045..5869f03 100644 (file)
@@ -1116,7 +1116,8 @@ __printf(2, 3) static void btf_show(struct btf_show *show, const char *fmt, ...)
  */
 #define btf_show_type_value(show, fmt, value)                                 \
        do {                                                                   \
-               if ((value) != 0 || (show->flags & BTF_SHOW_ZERO) ||           \
+               if ((value) != (__typeof__(value))0 ||                         \
+                   (show->flags & BTF_SHOW_ZERO) ||                           \
                    show->state.depth == 0) {                                  \
                        btf_show(show, "%s%s" fmt "%s%s",                      \
                                 btf_show_indent(show),                        \