Messages in this thread | | | Date | Sun, 12 Sep 2021 05:08:32 +0800 | From | kernel test robot <> | Subject | [congwang:sch_bpf 3/3] kernel/bpf/priority_queue_map.c:77:11: error: 'struct bpf_priority_queue' has no member named 'size' |
| |
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 [unhandled content-type:application/gzip] | |