All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: [congwang:sch_bpf 3/3] kernel/bpf/priority_queue_map.c:77:11: error: 'struct bpf_priority_queue' has no member named 'size'
Date: Sun, 12 Sep 2021 05:08:32 +0800	[thread overview]
Message-ID: <202109120530.ra4FQyh9-lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 8562 bytes --]

tree:   https://github.com/congwang/linux.git sch_bpf
head:   f69c4127564dd6abacf52f9e5e2479de874493d9
commit: f69c4127564dd6abacf52f9e5e2479de874493d9 [3/3] bpf: introduce priority queue based map
config: powerpc-ppc64_defconfig (attached as .config)
compiler: powerpc64-linux-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/congwang/linux/commit/f69c4127564dd6abacf52f9e5e2479de874493d9
        git remote add congwang https://github.com/congwang/linux.git
        git fetch --no-tags congwang sch_bpf
        git checkout f69c4127564dd6abacf52f9e5e2479de874493d9
        # save the attached .config to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=powerpc SHELL=/bin/bash

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   kernel/bpf/priority_queue_map.c: In function 'priority_queue_map_alloc':
>> kernel/bpf/priority_queue_map.c:77:11: error: 'struct bpf_priority_queue' has no member named 'size'
      77 |         pq->size = (u64) attr->max_entries + 1;
         |           ^~
>> kernel/bpf/priority_queue_map.c:80:11: error: 'struct bpf_priority_queue' has no member named 'elem_size'
      80 |         pq->elem_size = sizeof(struct bpf_priority_queue_node ) +
         |           ^~
   kernel/bpf/priority_queue_map.c: In function 'priority_queue_map_peek':
>> kernel/bpf/priority_queue_map.c:111:9: error: 'ptr' undeclared (first use in this function)
     111 |         ptr = n->key + pq->map.key_size;
         |         ^~~
   kernel/bpf/priority_queue_map.c:111:9: note: each undeclared identifier is reported only once for each function it appears in
>> kernel/bpf/priority_queue_map.c:100:13: error: unused variable 'key_size' [-Werror=unused-variable]
     100 |         u32 key_size = map->key_size;
         |             ^~~~~~~~
   kernel/bpf/priority_queue_map.c: In function 'priority_queue_map_pop_elem':
   kernel/bpf/priority_queue_map.c:133:9: error: 'ptr' undeclared (first use in this function)
     133 |         ptr = n->key + pq->map.key_size;
         |         ^~~
   kernel/bpf/priority_queue_map.c:122:13: error: unused variable 'key_size' [-Werror=unused-variable]
     122 |         u32 key_size = map->key_size;
         |             ^~~~~~~~
   kernel/bpf/priority_queue_map.c: At top level:
>> kernel/bpf/priority_queue_map.c:152:33: error: no previous prototype for 'alloc_priority_queue_node' [-Werror=missing-prototypes]
     152 | struct bpf_priority_queue_node *alloc_priority_queue_node(struct bpf_priority_queue *pq)
         |                                 ^~~~~~~~~~~~~~~~~~~~~~~~~
   kernel/bpf/priority_queue_map.c: In function 'alloc_priority_queue_node':
   kernel/bpf/priority_queue_map.c:154:49: error: 'struct bpf_priority_queue' has no member named 'elem_size'
     154 |         return bpf_map_kmalloc_node(&pq->map, pq->elem_size,
         |                                                 ^~
   kernel/bpf/priority_queue_map.c: In function 'priority_queue_map_update_elem':
>> kernel/bpf/priority_queue_map.c:166:23: error: 'flags' redeclared as different kind of symbol
     166 |         unsigned long flags;
         |                       ^~~~~
   kernel/bpf/priority_queue_map.c:161:57: note: previous definition of 'flags' with type 'u64' {aka 'long long unsigned int'}
     161 |                                        void *value, u64 flags)
         |                                                     ~~~~^~~~~
   kernel/bpf/priority_queue_map.c:165:13: error: unused variable 'key_size' [-Werror=unused-variable]
     165 |         u32 key_size = map->key_size;
         |             ^~~~~~~~
   kernel/bpf/priority_queue_map.c: In function 'alloc_priority_queue_node':
   kernel/bpf/priority_queue_map.c:157:1: error: control reaches end of non-void function [-Werror=return-type]
     157 | }
         | ^
   cc1: all warnings being treated as errors


vim +77 kernel/bpf/priority_queue_map.c

    63	
    64	static struct bpf_map *priority_queue_map_alloc(union bpf_attr *attr)
    65	{
    66		int numa_node = bpf_map_attr_numa_node(attr);
    67		struct bpf_priority_queue *pq;
    68		u64 size, queue_size;
    69	
    70		queue_size = sizeof(*pq) + size * attr->value_size;
    71		pq = bpf_map_area_alloc(queue_size, numa_node);
    72		if (!pq)
    73			return ERR_PTR(-ENOMEM);
    74	
    75		memset(pq, 0, sizeof(*pq));
    76		bpf_map_init_from_attr(&pq->map, attr);
  > 77		pq->size = (u64) attr->max_entries + 1;
    78		raw_spin_lock_init(&pq->lock);
    79		pq_root_init(&pq->root, bpf_priority_queue_cmp);
  > 80		pq->elem_size = sizeof(struct bpf_priority_queue_node ) +
    81				  round_up(pq->map.key_size, 8) +
    82				  round_up(pq->map.value_size, 8);
    83		return &pq->map;
    84	}
    85	
    86	/* Called when map->refcnt goes to zero, either from workqueue or from syscall */
    87	static void priority_queue_map_free(struct bpf_map *map)
    88	{
    89		struct bpf_priority_queue *pq = bpf_priority_queue(map);
    90	
    91		pq_flush(&pq->root, NULL);
    92		bpf_map_area_free(pq);
    93	}
    94	
    95	/* Called from syscall or from eBPF program */
    96	static int priority_queue_map_peek(struct bpf_map *map, void *value)
    97	{
    98		struct bpf_priority_queue *pq = bpf_priority_queue(map);
    99		struct bpf_priority_queue_node *n;
 > 100		u32 key_size = map->key_size;
   101		struct pq_node *node;
   102		unsigned long flags;
   103	
   104		raw_spin_lock_irqsave(&pq->lock, flags);
   105		node = pq_top(&pq->root);
   106		if (!node) {
   107			raw_spin_unlock_irqrestore(&pq->lock, flags);
   108			return -ENOENT;
   109		}
   110		n = container_of(node, struct bpf_priority_queue_node, node);
 > 111		ptr = n->key + pq->map.key_size;
   112		memcpy(value, ptr, pq->map.value_size);
   113		raw_spin_unlock_irqrestore(&pq->lock, flags);
   114		return 0;
   115	}
   116	
   117	/* Called from syscall or from eBPF program */
   118	static int priority_queue_map_pop_elem(struct bpf_map *map, void *value)
   119	{
   120		struct bpf_priority_queue *pq = bpf_priority_queue(map);
   121		struct bpf_priority_queue_node *n;
   122		u32 key_size = map->key_size;
   123		struct pq_node *node;
   124		unsigned long flags;
   125	
   126		raw_spin_lock_irqsave(&pq->lock, flags);
   127		node = pq_pop(&pq->root);
   128		if (!node) {
   129			raw_spin_unlock_irqrestore(&pq->lock, flags);
   130			return -ENOENT;
   131		}
   132		n = container_of(node, struct bpf_priority_queue_node, node);
   133		ptr = n->key + pq->map.key_size;
   134		memcpy(value, ptr, pq->map.value_size);
   135		raw_spin_unlock_irqrestore(&pq->lock, flags);
   136		return 0;
   137	}
   138	
   139	/* Called from syscall or from eBPF program */
   140	static int priority_queue_map_push_elem(struct bpf_map *map, void *value,
   141					     u64 flags)
   142	{
   143		return -EINVAL;
   144	}
   145	
   146	/* Called from syscall or from eBPF program */
   147	static void *priority_queue_map_lookup_elem(struct bpf_map *map, void *key)
   148	{
   149		return NULL;
   150	}
   151	
 > 152	struct bpf_priority_queue_node *alloc_priority_queue_node(struct bpf_priority_queue *pq)
   153	{
   154		return bpf_map_kmalloc_node(&pq->map, pq->elem_size,
   155					     GFP_ATOMIC | __GFP_NOWARN,
   156					     pq->map.numa_node);
   157	}
   158	
   159	/* Called from syscall or from eBPF program */
   160	static int priority_queue_map_update_elem(struct bpf_map *map, void *key,
   161					       void *value, u64 flags)
   162	{
   163		struct bpf_priority_queue *pq = bpf_priority_queue(map);
   164		struct bpf_priority_queue_node *n;
   165		u32 key_size = map->key_size;
 > 166		unsigned long flags;
   167	
   168		n = alloc_priority_queue_node(pq);
   169		if (!n)
   170			return -ENOMEM;
   171		raw_spin_lock_irqsave(&pq->lock, flags);
   172		pq_push(&pq->root, &n->node);
   173		raw_spin_unlock_irqrestore(&pq->lock, flags);
   174		return 0;
   175	}
   176	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 27234 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: Cong Wang <cong.wang@bytedance.com>
Cc: kbuild-all@lists.01.org, linux-kernel@vger.kernel.org
Subject: [congwang:sch_bpf 3/3] kernel/bpf/priority_queue_map.c:77:11: error: 'struct bpf_priority_queue' has no member named 'size'
Date: Sun, 12 Sep 2021 05:08:32 +0800	[thread overview]
Message-ID: <202109120530.ra4FQyh9-lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 8372 bytes --]

tree:   https://github.com/congwang/linux.git sch_bpf
head:   f69c4127564dd6abacf52f9e5e2479de874493d9
commit: f69c4127564dd6abacf52f9e5e2479de874493d9 [3/3] bpf: introduce priority queue based map
config: powerpc-ppc64_defconfig (attached as .config)
compiler: powerpc64-linux-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/congwang/linux/commit/f69c4127564dd6abacf52f9e5e2479de874493d9
        git remote add congwang https://github.com/congwang/linux.git
        git fetch --no-tags congwang sch_bpf
        git checkout f69c4127564dd6abacf52f9e5e2479de874493d9
        # save the attached .config to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=powerpc SHELL=/bin/bash

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   kernel/bpf/priority_queue_map.c: In function 'priority_queue_map_alloc':
>> kernel/bpf/priority_queue_map.c:77:11: error: 'struct bpf_priority_queue' has no member named 'size'
      77 |         pq->size = (u64) attr->max_entries + 1;
         |           ^~
>> kernel/bpf/priority_queue_map.c:80:11: error: 'struct bpf_priority_queue' has no member named 'elem_size'
      80 |         pq->elem_size = sizeof(struct bpf_priority_queue_node ) +
         |           ^~
   kernel/bpf/priority_queue_map.c: In function 'priority_queue_map_peek':
>> kernel/bpf/priority_queue_map.c:111:9: error: 'ptr' undeclared (first use in this function)
     111 |         ptr = n->key + pq->map.key_size;
         |         ^~~
   kernel/bpf/priority_queue_map.c:111:9: note: each undeclared identifier is reported only once for each function it appears in
>> kernel/bpf/priority_queue_map.c:100:13: error: unused variable 'key_size' [-Werror=unused-variable]
     100 |         u32 key_size = map->key_size;
         |             ^~~~~~~~
   kernel/bpf/priority_queue_map.c: In function 'priority_queue_map_pop_elem':
   kernel/bpf/priority_queue_map.c:133:9: error: 'ptr' undeclared (first use in this function)
     133 |         ptr = n->key + pq->map.key_size;
         |         ^~~
   kernel/bpf/priority_queue_map.c:122:13: error: unused variable 'key_size' [-Werror=unused-variable]
     122 |         u32 key_size = map->key_size;
         |             ^~~~~~~~
   kernel/bpf/priority_queue_map.c: At top level:
>> kernel/bpf/priority_queue_map.c:152:33: error: no previous prototype for 'alloc_priority_queue_node' [-Werror=missing-prototypes]
     152 | struct bpf_priority_queue_node *alloc_priority_queue_node(struct bpf_priority_queue *pq)
         |                                 ^~~~~~~~~~~~~~~~~~~~~~~~~
   kernel/bpf/priority_queue_map.c: In function 'alloc_priority_queue_node':
   kernel/bpf/priority_queue_map.c:154:49: error: 'struct bpf_priority_queue' has no member named 'elem_size'
     154 |         return bpf_map_kmalloc_node(&pq->map, pq->elem_size,
         |                                                 ^~
   kernel/bpf/priority_queue_map.c: In function 'priority_queue_map_update_elem':
>> kernel/bpf/priority_queue_map.c:166:23: error: 'flags' redeclared as different kind of symbol
     166 |         unsigned long flags;
         |                       ^~~~~
   kernel/bpf/priority_queue_map.c:161:57: note: previous definition of 'flags' with type 'u64' {aka 'long long unsigned int'}
     161 |                                        void *value, u64 flags)
         |                                                     ~~~~^~~~~
   kernel/bpf/priority_queue_map.c:165:13: error: unused variable 'key_size' [-Werror=unused-variable]
     165 |         u32 key_size = map->key_size;
         |             ^~~~~~~~
   kernel/bpf/priority_queue_map.c: In function 'alloc_priority_queue_node':
   kernel/bpf/priority_queue_map.c:157:1: error: control reaches end of non-void function [-Werror=return-type]
     157 | }
         | ^
   cc1: all warnings being treated as errors


vim +77 kernel/bpf/priority_queue_map.c

    63	
    64	static struct bpf_map *priority_queue_map_alloc(union bpf_attr *attr)
    65	{
    66		int numa_node = bpf_map_attr_numa_node(attr);
    67		struct bpf_priority_queue *pq;
    68		u64 size, queue_size;
    69	
    70		queue_size = sizeof(*pq) + size * attr->value_size;
    71		pq = bpf_map_area_alloc(queue_size, numa_node);
    72		if (!pq)
    73			return ERR_PTR(-ENOMEM);
    74	
    75		memset(pq, 0, sizeof(*pq));
    76		bpf_map_init_from_attr(&pq->map, attr);
  > 77		pq->size = (u64) attr->max_entries + 1;
    78		raw_spin_lock_init(&pq->lock);
    79		pq_root_init(&pq->root, bpf_priority_queue_cmp);
  > 80		pq->elem_size = sizeof(struct bpf_priority_queue_node ) +
    81				  round_up(pq->map.key_size, 8) +
    82				  round_up(pq->map.value_size, 8);
    83		return &pq->map;
    84	}
    85	
    86	/* Called when map->refcnt goes to zero, either from workqueue or from syscall */
    87	static void priority_queue_map_free(struct bpf_map *map)
    88	{
    89		struct bpf_priority_queue *pq = bpf_priority_queue(map);
    90	
    91		pq_flush(&pq->root, NULL);
    92		bpf_map_area_free(pq);
    93	}
    94	
    95	/* Called from syscall or from eBPF program */
    96	static int priority_queue_map_peek(struct bpf_map *map, void *value)
    97	{
    98		struct bpf_priority_queue *pq = bpf_priority_queue(map);
    99		struct bpf_priority_queue_node *n;
 > 100		u32 key_size = map->key_size;
   101		struct pq_node *node;
   102		unsigned long flags;
   103	
   104		raw_spin_lock_irqsave(&pq->lock, flags);
   105		node = pq_top(&pq->root);
   106		if (!node) {
   107			raw_spin_unlock_irqrestore(&pq->lock, flags);
   108			return -ENOENT;
   109		}
   110		n = container_of(node, struct bpf_priority_queue_node, node);
 > 111		ptr = n->key + pq->map.key_size;
   112		memcpy(value, ptr, pq->map.value_size);
   113		raw_spin_unlock_irqrestore(&pq->lock, flags);
   114		return 0;
   115	}
   116	
   117	/* Called from syscall or from eBPF program */
   118	static int priority_queue_map_pop_elem(struct bpf_map *map, void *value)
   119	{
   120		struct bpf_priority_queue *pq = bpf_priority_queue(map);
   121		struct bpf_priority_queue_node *n;
   122		u32 key_size = map->key_size;
   123		struct pq_node *node;
   124		unsigned long flags;
   125	
   126		raw_spin_lock_irqsave(&pq->lock, flags);
   127		node = pq_pop(&pq->root);
   128		if (!node) {
   129			raw_spin_unlock_irqrestore(&pq->lock, flags);
   130			return -ENOENT;
   131		}
   132		n = container_of(node, struct bpf_priority_queue_node, node);
   133		ptr = n->key + pq->map.key_size;
   134		memcpy(value, ptr, pq->map.value_size);
   135		raw_spin_unlock_irqrestore(&pq->lock, flags);
   136		return 0;
   137	}
   138	
   139	/* Called from syscall or from eBPF program */
   140	static int priority_queue_map_push_elem(struct bpf_map *map, void *value,
   141					     u64 flags)
   142	{
   143		return -EINVAL;
   144	}
   145	
   146	/* Called from syscall or from eBPF program */
   147	static void *priority_queue_map_lookup_elem(struct bpf_map *map, void *key)
   148	{
   149		return NULL;
   150	}
   151	
 > 152	struct bpf_priority_queue_node *alloc_priority_queue_node(struct bpf_priority_queue *pq)
   153	{
   154		return bpf_map_kmalloc_node(&pq->map, pq->elem_size,
   155					     GFP_ATOMIC | __GFP_NOWARN,
   156					     pq->map.numa_node);
   157	}
   158	
   159	/* Called from syscall or from eBPF program */
   160	static int priority_queue_map_update_elem(struct bpf_map *map, void *key,
   161					       void *value, u64 flags)
   162	{
   163		struct bpf_priority_queue *pq = bpf_priority_queue(map);
   164		struct bpf_priority_queue_node *n;
   165		u32 key_size = map->key_size;
 > 166		unsigned long flags;
   167	
   168		n = alloc_priority_queue_node(pq);
   169		if (!n)
   170			return -ENOMEM;
   171		raw_spin_lock_irqsave(&pq->lock, flags);
   172		pq_push(&pq->root, &n->node);
   173		raw_spin_unlock_irqrestore(&pq->lock, flags);
   174		return 0;
   175	}
   176	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 27234 bytes --]

             reply	other threads:[~2021-09-11 21:08 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-11 21:08 kernel test robot [this message]
2021-09-11 21:08 ` [congwang:sch_bpf 3/3] kernel/bpf/priority_queue_map.c:77:11: error: 'struct bpf_priority_queue' has no member named 'size' kernel test robot
  -- strict thread matches above, loose matches on Subject: below --
2021-09-05  0:49 kernel test robot
2021-09-05  0:49 ` kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202109120530.ra4FQyh9-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild-all@lists.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.