Re: [PATCH] samples/bpf: Fix duplicate struct define in test_lru_dist sample

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 11/18/22 1:47 AM, Liao Chang wrote:
Build sample/bpf report error as follow:

   CC  ./samples/bpf/test_lru_dist
./samples/bpf/test_lru_dist.c:35:8: error: redefinition of ‘struct list_head’
    35 | struct list_head {
       |        ^~~~~~~~~
In file included from ./samples/bpf/test_lru_dist.c:6:
./tools/include/linux/types.h:84:8: note: originally defined here
    84 | struct list_head {

Remove the duplicate definition of struct list_head in test_lru_dist.c

Signed-off-by: Liao Chang <liaochang1@xxxxxxxxxx>
---
  samples/bpf/test_lru_dist.c | 4 ----
  1 file changed, 4 deletions(-)

diff --git a/samples/bpf/test_lru_dist.c b/samples/bpf/test_lru_dist.c
index 5efb91763d65..2e7341044090 100644
--- a/samples/bpf/test_lru_dist.c
+++ b/samples/bpf/test_lru_dist.c
@@ -32,10 +32,6 @@ static int nr_cpus;
  static unsigned long long *dist_keys;
  static unsigned int dist_key_counts;
-struct list_head {
-	struct list_head *next, *prev;
-};
-

This will actually break it, see CI:

https://github.com/kernel-patches/bpf/actions/runs/3500019006/jobs/5862316961

  [...]
  CLANG-bpf  /tmp/work/bpf/bpf/samples/bpf/lathist_kern.o
    CLANG-bpf  /tmp/work/bpf/bpf/samples/bpf/offwaketime_kern.o
    CLANG-bpf  /tmp/work/bpf/bpf/samples/bpf/spintest_kern.o
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c:35:42: warning: ‘struct list_head’ declared inside parameter list will not be visible outside of this definition or declaration
     35 | static inline void INIT_LIST_HEAD(struct list_head *list)
        |                                          ^~~~~~~~~
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c: In function ‘INIT_LIST_HEAD’:
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c:37:6: error: dereferencing pointer to incomplete type ‘struct list_head’
     37 |  list->next = list;
        |      ^~
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c: At top level:
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c:41:43: warning: ‘struct list_head’ declared inside parameter list will not be visible outside of this definition or declaration
     41 | static inline int list_empty(const struct list_head *head)
        |                                           ^~~~~~~~~
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c: In function ‘list_empty’:
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c:43:13: error: dereferencing pointer to incomplete type ‘const struct list_head’
     43 |  return head->next == head;
        |             ^~
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c: At top level:
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c:46:38: warning: ‘struct list_head’ declared inside parameter list will not be visible outside of this definition or declaration
     46 | static inline void __list_add(struct list_head *new,
        |                                      ^~~~~~~~~
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c: In function ‘__list_add’:
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c:50:6: error: dereferencing pointer to incomplete type ‘struct list_head’
     50 |  next->prev = new;
        |      ^~
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c: At top level:
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c:56:36: warning: ‘struct list_head’ declared inside parameter list will not be visible outside of this definition or declaration
     56 | static inline void list_add(struct list_head *new, struct list_head *head)
        |                                    ^~~~~~~~~
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c: In function ‘list_add’:
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c:58:28: error: dereferencing pointer to incomplete type ‘struct list_head’
     58 |  __list_add(new, head, head->next);
    CLANG-bpf  /tmp/work/bpf/bpf/samples/bpf/map_perf_test_kern.o
        |                            ^~
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c:58:13: warning: passing argument 1 of ‘__list_add’ from incompatible pointer type [-Wincompatible-pointer-types]
     58 |  __list_add(new, head, head->next);
        |             ^~~
        |             |
        |             struct list_head *
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c:46:49: note: expected ‘struct list_head *’ but argument is of type ‘struct list_head *’
     46 | static inline void __list_add(struct list_head *new,
        |                               ~~~~~~~~~~~~~~~~~~^~~
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c:58:18: warning: passing argument 2 of ‘__list_add’ from incompatible pointer type [-Wincompatible-pointer-types]
     58 |  __list_add(new, head, head->next);
        |                  ^~~~
        |                  |
        |                  struct list_head *
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c:47:28: note: expected ‘struct list_head *’ but argument is of type ‘struct list_head *’
     47 |          struct list_head *prev,
        |          ~~~~~~~~~~~~~~~~~~^~~~
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c: At top level:
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c:61:38: warning: ‘struct list_head’ declared inside parameter list will not be visible outside of this definition or declaration
     61 | static inline void __list_del(struct list_head *prev, struct list_head *next)
        |                                      ^~~~~~~~~
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c: In function ‘__list_del’:
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c:63:6: error: dereferencing pointer to incomplete type ‘struct list_head’
     63 |  next->prev = prev;
        |      ^~
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c: At top level:
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c:67:44: warning: ‘struct list_head’ declared inside parameter list will not be visible outside of this definition or declaration
     67 | static inline void __list_del_entry(struct list_head *entry)
        |                                            ^~~~~~~~~
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c: In function ‘__list_del_entry’:
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c:69:18: error: dereferencing pointer to incomplete type ‘struct list_head’
     69 |  __list_del(entry->prev, entry->next);
        |                  ^~
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c: At top level:
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c:72:37: warning: ‘struct list_head’ declared inside parameter list will not be visible outside of this definition or declaration
     72 | static inline void list_move(struct list_head *list, struct list_head *head)
        |                                     ^~~~~~~~~
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c: In function ‘list_move’:
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c:74:19: warning: passing argument 1 of ‘__list_del_entry’ from incompatible pointer type [-Wincompatible-pointer-types]
     74 |  __list_del_entry(list);
        |                   ^~~~
        |                   |
        |                   struct list_head *
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c:67:55: note: expected ‘struct list_head *’ but argument is of type ‘struct list_head *’
     67 | static inline void __list_del_entry(struct list_head *entry)
        |                                     ~~~~~~~~~~~~~~~~~~^~~~~
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c:75:11: warning: passing argument 1 of ‘list_add’ from incompatible pointer type [-Wincompatible-pointer-types]
     75 |  list_add(list, head);
        |           ^~~~
        |           |
        |           struct list_head *
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c:56:47: note: expected ‘struct list_head *’ but argument is of type ‘struct list_head *’
     56 | static inline void list_add(struct list_head *new, struct list_head *head)
        |                             ~~~~~~~~~~~~~~~~~~^~~
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c:75:17: warning: passing argument 2 of ‘list_add’ from incompatible pointer type [-Wincompatible-pointer-types]
     75 |  list_add(list, head);
        |                 ^~~~
        |                 |
        |                 struct list_head *
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c:56:70: note: expected ‘struct list_head *’ but argument is of type ‘struct list_head *’
     56 | static inline void list_add(struct list_head *new, struct list_head *head)
        |                                                    ~~~~~~~~~~~~~~~~~~^~~~
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c: At top level:
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c:85:19: error: field ‘list’ has incomplete type
     85 |  struct list_head list;
        |                   ^~~~
  /tmp/work/bpf/bpf/samples/bpf/test_lru_dist.c:90:19: error: field ‘list’ has incomplete type
     90 |  struct list_head list;
        |                   ^~~~
    CLANG-bpf  /tmp/work/bpf/bpf/samples/bpf/test_overhead_tp_kern.o
  make[3]: *** [/tmp/work/bpf/bpf/samples/bpf/Makefile.target:58: /tmp/work/bpf/bpf/samples/bpf/test_lru_dist] Error 1
  make[3]: *** Waiting for unfinished jobs....
    LD      /tmp/work/bpf/bpf/samples/bpf/bpftool/bootstrap/libbpf/staticobjs/libbpf-in.o
    LINK    /tmp/work/bpf/bpf/samples/bpf/bpftool/bootstrap/libbpf/libbpf.a
    CC      /tmp/work/bpf/bpf/samples/bpf/bpftool/bootstrap/main.o
    CC      /tmp/work/bpf/bpf/samples/bpf/bpftool/bootstrap/common.o
    CC      /tmp/work/bpf/bpf/samples/bpf/bpftool/bootstrap/json_writer.o
    CC      /tmp/work/bpf/bpf/samples/bpf/bpftool/bootstrap/gen.o
    CC      /tmp/work/bpf/bpf/samples/bpf/bpftool/bootstrap/btf.o
    CC      /tmp/work/bpf/bpf/samples/bpf/bpftool/bootstrap/xlated_dumper.o
    CC      /tmp/work/bpf/bpf/samples/bpf/bpftool/bootstrap/btf_dumper.o
    CC      /tmp/work/bpf/bpf/samples/bpf/bpftool/bootstrap/disasm.o
    LINK    /tmp/work/bpf/bpf/samples/bpf/bpftool/bootstrap/bpftool
  make[2]: *** [/tmp/work/bpf/bpf/Makefile:1992: /tmp/work/bpf/bpf/samples/bpf] Error 2
  make[2]: Leaving directory '/tmp/work/bpf/bpf/kbuild-output'
  make[1]: *** [Makefile:231: __sub-make] Error 2
  make[1]: Leaving directory '/tmp/work/bpf/bpf'
  make: *** [Makefile:269: all] Error 2
  make: Leaving directory '/tmp/work/bpf/bpf/samples/bpf'
  Error: Process completed with exit code 2.



[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux