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, 05 Sep 2021 08:49:31 +0800 [thread overview]
Message-ID: <202109050826.BaXleWUe-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 8567 bytes --]
tree: https://github.com/congwang/linux.git sch_bpf
head: bf999641e11e4a3291fbaa9dd339162eaa3ccbe7
commit: bf999641e11e4a3291fbaa9dd339162eaa3ccbe7 [3/3] bpf: introduce priority queue based map
config: mips-randconfig-r036-20210905 (attached as .config)
compiler: mipsel-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/bf999641e11e4a3291fbaa9dd339162eaa3ccbe7
git remote add congwang https://github.com/congwang/linux.git
git fetch --no-tags congwang sch_bpf
git checkout bf999641e11e4a3291fbaa9dd339162eaa3ccbe7
# 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=mips SHELL=/bin/bash kernel/bpf/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All error/warnings (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: warning: unused variable 'key_size' [-Wunused-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: warning: unused variable 'key_size' [-Wunused-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: warning: no previous prototype for 'alloc_priority_queue_node' [-Wmissing-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: warning: unused variable 'key_size' [-Wunused-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: some 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: 32819 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, 5 Sep 2021 08:49:31 +0800 [thread overview]
Message-ID: <202109050826.BaXleWUe-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 8377 bytes --]
tree: https://github.com/congwang/linux.git sch_bpf
head: bf999641e11e4a3291fbaa9dd339162eaa3ccbe7
commit: bf999641e11e4a3291fbaa9dd339162eaa3ccbe7 [3/3] bpf: introduce priority queue based map
config: mips-randconfig-r036-20210905 (attached as .config)
compiler: mipsel-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/bf999641e11e4a3291fbaa9dd339162eaa3ccbe7
git remote add congwang https://github.com/congwang/linux.git
git fetch --no-tags congwang sch_bpf
git checkout bf999641e11e4a3291fbaa9dd339162eaa3ccbe7
# 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=mips SHELL=/bin/bash kernel/bpf/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All error/warnings (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: warning: unused variable 'key_size' [-Wunused-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: warning: unused variable 'key_size' [-Wunused-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: warning: no previous prototype for 'alloc_priority_queue_node' [-Wmissing-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: warning: unused variable 'key_size' [-Wunused-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: some 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: 32819 bytes --]
next reply other threads:[~2021-09-05 0:49 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-05 0:49 kernel test robot [this message]
2021-09-05 0:49 ` [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-11 21:08 kernel test robot
2021-09-11 21:08 ` 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=202109050826.BaXleWUe-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.