Messages in this thread | | | Date | Mon, 11 Mar 2019 22:44:27 +0800 | From | kbuild test robot <> | Subject | kernel/bpf/core.c:183:49: sparse: error: arithmetics on pointers to functions |
| |
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 12ad143e1b803e541e48b8ba40f550250259ecdd commit: c454a46b5efd8eff8880e88ece2976e60a26bf35 bpf: Add bpf_line_info support date: 3 months ago reproduce: # apt-get install sparse git checkout c454a46b5efd8eff8880e88ece2976e60a26bf35 make ARCH=x86_64 allmodconfig make C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'
All errors (new ones prefixed by >>):
include/linux/slab.h:332:43: sparse: warning: dubious: x & !y include/linux/slab.h:332:43: sparse: warning: dubious: x & !y >> kernel/bpf/core.c:183:49: sparse: error: arithmetics on pointers to functions kernel/bpf/core.c:733:6: sparse: warning: symbol 'bpf_jit_alloc_exec' was not declared. Should it be static? kernel/bpf/core.c:738:13: sparse: warning: symbol 'bpf_jit_free_exec' was not declared. Should it be static? include/linux/slab.h:332:43: sparse: warning: dubious: x & !y kernel/bpf/core.c:1778:9: sparse: warning: incorrect type in argument 1 (different address spaces) kernel/bpf/core.c:1778:9: sparse: expected struct callback_head *head kernel/bpf/core.c:1778:9: sparse: got struct callback_head [noderef] <asn:4> * include/linux/slab.h:332:43: sparse: warning: dubious: x & !y kernel/bpf/core.c:1852:44: sparse: warning: incorrect type in initializer (different address spaces) kernel/bpf/core.c:1852:44: sparse: expected struct bpf_prog_array_item *item kernel/bpf/core.c:1852:44: sparse: got struct bpf_prog_array_item [noderef] <asn:4> * kernel/bpf/core.c:1876:26: sparse: warning: incorrect type in assignment (different address spaces) kernel/bpf/core.c:1876:26: sparse: expected struct bpf_prog_array_item *existing kernel/bpf/core.c:1876:26: sparse: got struct bpf_prog_array_item [noderef] <asn:4> * kernel/bpf/core.c:1910:26: sparse: warning: incorrect type in assignment (different address spaces) kernel/bpf/core.c:1910:26: sparse: expected struct bpf_prog_array_item *[assigned] existing kernel/bpf/core.c:1910:26: sparse: got struct bpf_prog_array_item [noderef] <asn:4> * include/trace/events/xdp.h:28:1: sparse: warning: Using plain integer as NULL pointer include/trace/events/xdp.h:53:1: sparse: warning: Using plain integer as NULL pointer include/trace/events/xdp.h:111:1: sparse: warning: Using plain integer as NULL pointer include/trace/events/xdp.h:126:1: sparse: warning: Using plain integer as NULL pointer include/trace/events/xdp.h:161:1: sparse: warning: Using plain integer as NULL pointer include/trace/events/xdp.h:196:1: sparse: warning: Using plain integer as NULL pointer include/trace/events/xdp.h:231:1: sparse: warning: Using plain integer as NULL pointer kernel/bpf/core.c:1156:18: sparse: warning: Initializer entry defined twice kernel/bpf/core.c:1158:17: sparse: also defined here
vim +183 kernel/bpf/core.c
133 134 /* The jit engine is responsible to provide an array 135 * for insn_off to the jited_off mapping (insn_to_jit_off). 136 * 137 * The idx to this array is the insn_off. Hence, the insn_off 138 * here is relative to the prog itself instead of the main prog. 139 * This array has one entry for each xlated bpf insn. 140 * 141 * jited_off is the byte off to the last byte of the jited insn. 142 * 143 * Hence, with 144 * insn_start: 145 * The first bpf insn off of the prog. The insn off 146 * here is relative to the main prog. 147 * e.g. if prog is a subprog, insn_start > 0 148 * linfo_idx: 149 * The prog's idx to prog->aux->linfo and jited_linfo 150 * 151 * jited_linfo[linfo_idx] = prog->bpf_func 152 * 153 * For i > linfo_idx, 154 * 155 * jited_linfo[i] = prog->bpf_func + 156 * insn_to_jit_off[linfo[i].insn_off - insn_start - 1] 157 */ 158 void bpf_prog_fill_jited_linfo(struct bpf_prog *prog, 159 const u32 *insn_to_jit_off) 160 { 161 u32 linfo_idx, insn_start, insn_end, nr_linfo, i; 162 const struct bpf_line_info *linfo; 163 void **jited_linfo; 164 165 if (!prog->aux->jited_linfo) 166 /* Userspace did not provide linfo */ 167 return; 168 169 linfo_idx = prog->aux->linfo_idx; 170 linfo = &prog->aux->linfo[linfo_idx]; 171 insn_start = linfo[0].insn_off; 172 insn_end = insn_start + prog->len; 173 174 jited_linfo = &prog->aux->jited_linfo[linfo_idx]; 175 jited_linfo[0] = prog->bpf_func; 176 177 nr_linfo = prog->aux->nr_linfo - linfo_idx; 178 179 for (i = 1; i < nr_linfo && linfo[i].insn_off < insn_end; i++) 180 /* The verifier ensures that linfo[i].insn_off is 181 * strictly increasing 182 */ > 183 jited_linfo[i] = prog->bpf_func + 184 insn_to_jit_off[linfo[i].insn_off - insn_start - 1]; 185 } 186
--- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation [unhandled content-type:application/gzip] | |