From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============2591073983731426153==" MIME-Version: 1.0 From: Dan Carpenter Subject: Re: [PATCH bpf-next v9 05/11] bpf: support attaching freplace programs to multiple attach points Date: Tue, 29 Sep 2020 10:07:20 +0300 Message-ID: <20200929070720.GV4282@kadam> In-Reply-To: <160106910487.27725.11983967672504271627.stgit@toke.dk> List-Id: To: kbuild@lists.01.org --===============2591073983731426153== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi Toke, url: https://github.com/0day-ci/linux/commits/Toke-H-iland-J-rgensen/bpf= -Support-multi-attach-for-freplace-programs/20200926-052738 base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git ma= ster config: x86_64-randconfig-m001-20200925 (attached as .config) compiler: gcc-9 (Debian 9.3.0-15) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Dan Carpenter smatch warnings: kernel/bpf/verifier.c:11378 bpf_check_attach_target() error: we previously = assumed 'dst_prog' could be null (see line 11250) vim +/dst_prog +11378 kernel/bpf/verifier.c f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11215 int bpf_= check_attach_target(struct bpf_verifier_log *log, f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11216 c= onst struct bpf_prog *prog, 0f8a745b60efb2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11217 c= onst struct bpf_prog *dst_prog, f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11218 u= 32 btf_id, f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11219 s= truct bpf_attach_target_info *tgt_info) 38207291604401 Martin KaFai Lau 2019-10-24 11220 { be8704ff07d237 Alexei Starovoitov 2020-01-20 11221 bool prog_extensi= on =3D prog->type =3D=3D BPF_PROG_TYPE_EXT; f1b9509c2fb0ef Alexei Starovoitov 2019-10-30 11222 const char prefix= [] =3D "btf_trace_"; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11223 int ret =3D 0, su= bprog =3D -1, i; 38207291604401 Martin KaFai Lau 2019-10-24 11224 const struct btf_= type *t; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11225 bool conservative= =3D true; 38207291604401 Martin KaFai Lau 2019-10-24 11226 const char *tname; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11227 struct btf *btf; f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11228 long ad= dr =3D 0; 38207291604401 Martin KaFai Lau 2019-10-24 11229 = f1b9509c2fb0ef Alexei Starovoitov 2019-10-30 11230 if (!btf_id) { afd82d19795ce2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11231 bpf_lo= g(log, "Tracing programs must provide btf_id\n"); f1b9509c2fb0ef Alexei Starovoitov 2019-10-30 11232 return -EINVAL; f1b9509c2fb0ef Alexei Starovoitov 2019-10-30 11233 } 0f8a745b60efb2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11234 btf =3D= dst_prog ? dst_prog->aux->btf : btf_vmlinux; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11235 if (!btf) { afd82d19795ce2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11236 bpf_lo= g(log, 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11237 "FENTRY/FEXIT p= rogram can only be attached to another program annotated with BTF\n"); 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11238 return -EINVAL; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11239 } 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11240 t =3D btf_type_by= _id(btf, btf_id); 38207291604401 Martin KaFai Lau 2019-10-24 11241 if (!t) { afd82d19795ce2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11242 bpf_lo= g(log, "attach_btf_id %u is invalid\n", btf_id); 38207291604401 Martin KaFai Lau 2019-10-24 11243 return -EINVAL; 38207291604401 Martin KaFai Lau 2019-10-24 11244 } 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11245 tname =3D btf_nam= e_by_offset(btf, t->name_off); f1b9509c2fb0ef Alexei Starovoitov 2019-10-30 11246 if (!tname) { afd82d19795ce2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11247 bpf_lo= g(log, "attach_btf_id %u doesn't have a name\n", btf_id); f1b9509c2fb0ef Alexei Starovoitov 2019-10-30 11248 return -EINVAL; f1b9509c2fb0ef Alexei Starovoitov 2019-10-30 11249 } 0f8a745b60efb2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 @11250 if (dst= _prog) { Check for NULL. 0f8a745b60efb2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11251 struct= bpf_prog_aux *aux =3D dst_prog->aux; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11252 = 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11253 for (i =3D 0; i = < aux->func_info_cnt; i++) 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11254 if (aux->func_i= nfo[i].type_id =3D=3D btf_id) { 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11255 subprog =3D i; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11256 break; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11257 } 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11258 if (subprog =3D= =3D -1) { afd82d19795ce2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11259 bpf_l= og(log, "Subprog %s doesn't exist\n", tname); 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11260 return -EINVAL; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11261 } 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11262 conservative =3D= aux->func_info_aux[subprog].unreliable; be8704ff07d237 Alexei Starovoitov 2020-01-20 11263 if (prog_extensi= on) { be8704ff07d237 Alexei Starovoitov 2020-01-20 11264 if (conservativ= e) { afd82d19795ce2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11265 bpf_= log(log, be8704ff07d237 Alexei Starovoitov 2020-01-20 11266 "Cannot repla= ce static functions\n"); be8704ff07d237 Alexei Starovoitov 2020-01-20 11267 return -EINVAL; be8704ff07d237 Alexei Starovoitov 2020-01-20 11268 } be8704ff07d237 Alexei Starovoitov 2020-01-20 11269 if (!prog->jit_= requested) { afd82d19795ce2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11270 bpf_= log(log, be8704ff07d237 Alexei Starovoitov 2020-01-20 11271 "Extension pr= ograms should be JITed\n"); be8704ff07d237 Alexei Starovoitov 2020-01-20 11272 return -EINVAL; be8704ff07d237 Alexei Starovoitov 2020-01-20 11273 } be8704ff07d237 Alexei Starovoitov 2020-01-20 11274 } 0f8a745b60efb2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11275 if (!d= st_prog->jited) { afd82d19795ce2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11276 bpf_l= og(log, "Can attach to only JITed progs\n"); be8704ff07d237 Alexei Starovoitov 2020-01-20 11277 return -EINVAL; be8704ff07d237 Alexei Starovoitov 2020-01-20 11278 } 0f8a745b60efb2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11279 if (ds= t_prog->type =3D=3D prog->type) { be8704ff07d237 Alexei Starovoitov 2020-01-20 11280 /* Cannot fentr= y/fexit another fentry/fexit program. be8704ff07d237 Alexei Starovoitov 2020-01-20 11281 * Cannot attac= h program extension to another extension. be8704ff07d237 Alexei Starovoitov 2020-01-20 11282 * It's ok to a= ttach fentry/fexit to extension program. be8704ff07d237 Alexei Starovoitov 2020-01-20 11283 */ afd82d19795ce2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11284 bpf_l= og(log, "Cannot recursively attach\n"); be8704ff07d237 Alexei Starovoitov 2020-01-20 11285 return -EINVAL; be8704ff07d237 Alexei Starovoitov 2020-01-20 11286 } 0f8a745b60efb2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11287 if (ds= t_prog->type =3D=3D BPF_PROG_TYPE_TRACING && be8704ff07d237 Alexei Starovoitov 2020-01-20 11288 prog_extensi= on && 0f8a745b60efb2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11289 (d= st_prog->expected_attach_type =3D=3D BPF_TRACE_FENTRY || 0f8a745b60efb2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11290 d= st_prog->expected_attach_type =3D=3D BPF_TRACE_FEXIT)) { be8704ff07d237 Alexei Starovoitov 2020-01-20 11291 /* Program exte= nsions can extend all program types be8704ff07d237 Alexei Starovoitov 2020-01-20 11292 * except fentr= y/fexit. The reason is the following. be8704ff07d237 Alexei Starovoitov 2020-01-20 11293 * The fentry/f= exit programs are used for performance be8704ff07d237 Alexei Starovoitov 2020-01-20 11294 * analysis, st= ats and can be attached to any program be8704ff07d237 Alexei Starovoitov 2020-01-20 11295 * type except = themselves. When extension program is be8704ff07d237 Alexei Starovoitov 2020-01-20 11296 * replacing XD= P function it is necessary to allow be8704ff07d237 Alexei Starovoitov 2020-01-20 11297 * performance = analysis of all functions. Both original be8704ff07d237 Alexei Starovoitov 2020-01-20 11298 * XDP program = and its program extension. Hence be8704ff07d237 Alexei Starovoitov 2020-01-20 11299 * attaching fe= ntry/fexit to BPF_PROG_TYPE_EXT is be8704ff07d237 Alexei Starovoitov 2020-01-20 11300 * allowed. If = extending of fentry/fexit was allowed it be8704ff07d237 Alexei Starovoitov 2020-01-20 11301 * would be pos= sible to create long call chain be8704ff07d237 Alexei Starovoitov 2020-01-20 11302 * fentry->exte= nsion->fentry->extension beyond be8704ff07d237 Alexei Starovoitov 2020-01-20 11303 * reasonable s= tack size. Hence extending fentry is not be8704ff07d237 Alexei Starovoitov 2020-01-20 11304 * allowed. be8704ff07d237 Alexei Starovoitov 2020-01-20 11305 */ afd82d19795ce2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11306 bpf_l= og(log, "Cannot extend fentry/fexit\n"); be8704ff07d237 Alexei Starovoitov 2020-01-20 11307 return -EINVAL; be8704ff07d237 Alexei Starovoitov 2020-01-20 11308 } 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11309 } else { be8704ff07d237 Alexei Starovoitov 2020-01-20 11310 if (prog_extensi= on) { afd82d19795ce2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11311 bpf_l= og(log, "Cannot replace kernel functions\n"); be8704ff07d237 Alexei Starovoitov 2020-01-20 11312 return -EINVAL; be8704ff07d237 Alexei Starovoitov 2020-01-20 11313 } >>From here we know that "dst_prog" can only be NULL when "prog_extension" is NULL. 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11314 } f1b9509c2fb0ef Alexei Starovoitov 2019-10-30 11315 = f1b9509c2fb0ef Alexei Starovoitov 2019-10-30 11316 switch (prog->exp= ected_attach_type) { f1b9509c2fb0ef Alexei Starovoitov 2019-10-30 11317 case BPF_TRACE_RA= W_TP: 0f8a745b60efb2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11318 if (ds= t_prog) { afd82d19795ce2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11319 bpf_l= og(log, 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11320 "Only FENTRY/F= EXIT progs are attachable to another BPF prog\n"); 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11321 return -EINVAL; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11322 } 38207291604401 Martin KaFai Lau 2019-10-24 11323 if (!btf_type_is= _typedef(t)) { afd82d19795ce2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11324 bpf_l= og(log, "attach_btf_id %u is not a typedef\n", 38207291604401 Martin KaFai Lau 2019-10-24 11325 btf_id); 38207291604401 Martin KaFai Lau 2019-10-24 11326 return -EINVAL; 38207291604401 Martin KaFai Lau 2019-10-24 11327 } f1b9509c2fb0ef Alexei Starovoitov 2019-10-30 11328 if (strncmp(pref= ix, tname, sizeof(prefix) - 1)) { afd82d19795ce2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11329 bpf_l= og(log, "attach_btf_id %u points to wrong type name %s\n", 38207291604401 Martin KaFai Lau 2019-10-24 11330 btf_id, tname); 38207291604401 Martin KaFai Lau 2019-10-24 11331 return -EINVAL; 38207291604401 Martin KaFai Lau 2019-10-24 11332 } 38207291604401 Martin KaFai Lau 2019-10-24 11333 tname +=3D sizeo= f(prefix) - 1; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11334 t =3D btf_type_b= y_id(btf, t->type); 38207291604401 Martin KaFai Lau 2019-10-24 11335 if (!btf_type_is= _ptr(t)) 38207291604401 Martin KaFai Lau 2019-10-24 11336 /* should never= happen in valid vmlinux build */ 38207291604401 Martin KaFai Lau 2019-10-24 11337 return -EINVAL; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11338 t =3D btf_type_b= y_id(btf, t->type); 38207291604401 Martin KaFai Lau 2019-10-24 11339 if (!btf_type_is= _func_proto(t)) 38207291604401 Martin KaFai Lau 2019-10-24 11340 /* should never= happen in valid vmlinux build */ 38207291604401 Martin KaFai Lau 2019-10-24 11341 return -EINVAL; 38207291604401 Martin KaFai Lau 2019-10-24 11342 = f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11343 break; 15d83c4d7cef5c Yonghong Song 2020-05-09 11344 case BPF_TRACE_IT= ER: 15d83c4d7cef5c Yonghong Song 2020-05-09 11345 if (!btf_type_is= _func(t)) { afd82d19795ce2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11346 bpf_l= og(log, "attach_btf_id %u is not a function\n", 15d83c4d7cef5c Yonghong Song 2020-05-09 11347 btf_id); 15d83c4d7cef5c Yonghong Song 2020-05-09 11348 return -EINVAL; 15d83c4d7cef5c Yonghong Song 2020-05-09 11349 } 15d83c4d7cef5c Yonghong Song 2020-05-09 11350 t =3D btf_type_b= y_id(btf, t->type); 15d83c4d7cef5c Yonghong Song 2020-05-09 11351 if (!btf_type_is= _func_proto(t)) 15d83c4d7cef5c Yonghong Song 2020-05-09 11352 return -EINVAL; f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11353 ret = =3D btf_distill_func_proto(log, btf, t, tname, &tgt_info->fmodel); f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11354 if (re= t) 15d83c4d7cef5c Yonghong Song 2020-05-09 11355 return ret; f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11356 break; be8704ff07d237 Alexei Starovoitov 2020-01-20 11357 default: be8704ff07d237 Alexei Starovoitov 2020-01-20 11358 if (!prog_extens= ion) be8704ff07d237 Alexei Starovoitov 2020-01-20 11359 return -EINVAL; df561f6688fef7 Gustavo A. R. Silva 2020-08-23 11360 fallthrough; ae24082331d9bb KP Singh 2020-03-04 11361 case BPF_MODIFY_R= ETURN: 9e4e01dfd3254c KP Singh 2020-03-29 11362 case BPF_LSM_MAC: fec56f5890d93f Alexei Starovoitov 2019-11-14 11363 case BPF_TRACE_FE= NTRY: fec56f5890d93f Alexei Starovoitov 2019-11-14 11364 case BPF_TRACE_FE= XIT: fec56f5890d93f Alexei Starovoitov 2019-11-14 11365 if (!btf_type_is= _func(t)) { afd82d19795ce2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11366 bpf_l= og(log, "attach_btf_id %u is not a function\n", fec56f5890d93f Alexei Starovoitov 2019-11-14 11367 btf_id); fec56f5890d93f Alexei Starovoitov 2019-11-14 11368 return -EINVAL; fec56f5890d93f Alexei Starovoitov 2019-11-14 11369 } be8704ff07d237 Alexei Starovoitov 2020-01-20 11370 if (prog_extensi= on && afd82d19795ce2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11371 bt= f_check_type_match(log, prog, btf, t)) If "prog_extension" can be NULL or non-NULL. be8704ff07d237 Alexei Starovoitov 2020-01-20 11372 return -EINVAL; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11373 t =3D btf_type_b= y_id(btf, t->type); fec56f5890d93f Alexei Starovoitov 2019-11-14 11374 if (!btf_type_is= _func_proto(t)) fec56f5890d93f Alexei Starovoitov 2019-11-14 11375 return -EINVAL; f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11376 = 7c9bfdeec82c49 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11377 if ((p= rog->aux->saved_dst_prog_type && 7c9bfdeec82c49 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 @11378 p= rog->aux->saved_dst_prog_type !=3D dst_prog->type) || = ^^^^^^^^^^^^^^ Unchecked dereference. 7c9bfdeec82c49 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11379 (p= rog->aux->saved_dst_attach_type && 7c9bfdeec82c49 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11380 p= rog->aux->saved_dst_attach_type !=3D dst_prog->expected_attach_type)) 7c9bfdeec82c49 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11381 retur= n -EINVAL; 7c9bfdeec82c49 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11382 = 0f8a745b60efb2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11383 if (ds= t_prog && conservative) 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11384 t =3D NULL; f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11385 = f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11386 ret = =3D btf_distill_func_proto(log, btf, t, tname, &tgt_info->fmodel); fec56f5890d93f Alexei Starovoitov 2019-11-14 11387 if (ret < 0) f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11388 retur= n ret; f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11389 = 0f8a745b60efb2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11390 if (ds= t_prog) { e9eeec58c992c4 Yonghong Song 2019-12-04 11391 if (subprog =3D= =3D 0) 0f8a745b60efb2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11392 addr= =3D (long) dst_prog->bpf_func; e9eeec58c992c4 Yonghong Song 2019-12-04 11393 else 0f8a745b60efb2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11394 addr= =3D (long) dst_prog->aux->func[subprog]->bpf_func; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11395 } else { fec56f5890d93f Alexei Starovoitov 2019-11-14 11396 addr =3D kallsy= ms_lookup_name(tname); fec56f5890d93f Alexei Starovoitov 2019-11-14 11397 if (!addr) { afd82d19795ce2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11398 bpf_= log(log, fec56f5890d93f Alexei Starovoitov 2019-11-14 11399 "The address = of function %s cannot be found\n", fec56f5890d93f Alexei Starovoitov 2019-11-14 11400 tname); f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11401 retu= rn -ENOENT; fec56f5890d93f Alexei Starovoitov 2019-11-14 11402 } 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11403 } 18644cec714aab Alexei Starovoitov 2020-05-28 11404 = 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11405 if (prog->aux->s= leepable) { 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11406 ret =3D -EINVAL; 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11407 switch (prog->t= ype) { 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11408 case BPF_PROG_T= YPE_TRACING: 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11409 /* fentry/fexi= t/fmod_ret progs can be sleepable only if they are 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11410 * attached to= ALLOW_ERROR_INJECTION and are not in denylist. 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11411 */ 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11412 if (!check_non= _sleepable_error_inject(btf_id) && 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11413 within_err= or_injection_list(addr)) 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11414 ret =3D 0; 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11415 break; 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11416 case BPF_PROG_T= YPE_LSM: 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11417 /* LSM progs c= heck that they are attached to bpf_lsm_*() funcs. 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11418 * Only some o= f them are sleepable. 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11419 */ 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11420 if (check_slee= pable_lsm_hook(btf_id)) 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11421 ret =3D 0; 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11422 break; 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11423 default: 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11424 break; 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11425 } f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11426 if (r= et) { f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11427 bpf_= log(log, "%s is not sleepable\n", tname); f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11428 retu= rn ret; f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11429 } 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11430 } else if (prog-= >expected_attach_type =3D=3D BPF_MODIFY_RETURN) { 0f8a745b60efb2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11431 if (d= st_prog) { afd82d19795ce2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11432 bpf_= log(log, "can't modify return codes of BPF programs\n"); f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11433 retu= rn -EINVAL; 81a09cc12e4a91 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11434 } f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11435 ret = =3D check_attach_modify_return(addr, tname); f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11436 if (r= et) { f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11437 bpf_= log(log, "%s() is not modifiable\n", tname); f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11438 retu= rn ret; 18644cec714aab Alexei Starovoitov 2020-05-28 11439 } f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11440 } f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11441 = f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11442 break; f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11443 } f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11444 tgt_inf= o->tgt_addr =3D addr; f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11445 tgt_inf= o->tgt_name =3D tname; f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11446 tgt_inf= o->tgt_type =3D t; f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11447 return = 0; f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11448 } --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org --===============2591073983731426153== Content-Type: application/gzip MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="config.gz" 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 --===============2591073983731426153==-- From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============6975713368333992343==" MIME-Version: 1.0 From: Dan Carpenter To: kbuild-all@lists.01.org Subject: Re: [PATCH bpf-next v9 05/11] bpf: support attaching freplace programs to multiple attach points Date: Tue, 29 Sep 2020 10:07:20 +0300 Message-ID: <20200929070720.GV4282@kadam> In-Reply-To: <160106910487.27725.11983967672504271627.stgit@toke.dk> List-Id: --===============6975713368333992343== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi Toke, url: https://github.com/0day-ci/linux/commits/Toke-H-iland-J-rgensen/bpf= -Support-multi-attach-for-freplace-programs/20200926-052738 base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git ma= ster config: x86_64-randconfig-m001-20200925 (attached as .config) compiler: gcc-9 (Debian 9.3.0-15) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Dan Carpenter smatch warnings: kernel/bpf/verifier.c:11378 bpf_check_attach_target() error: we previously = assumed 'dst_prog' could be null (see line 11250) vim +/dst_prog +11378 kernel/bpf/verifier.c f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11215 int bpf_= check_attach_target(struct bpf_verifier_log *log, f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11216 c= onst struct bpf_prog *prog, 0f8a745b60efb2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11217 c= onst struct bpf_prog *dst_prog, f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11218 u= 32 btf_id, f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11219 s= truct bpf_attach_target_info *tgt_info) 38207291604401 Martin KaFai Lau 2019-10-24 11220 { be8704ff07d237 Alexei Starovoitov 2020-01-20 11221 bool prog_extensi= on =3D prog->type =3D=3D BPF_PROG_TYPE_EXT; f1b9509c2fb0ef Alexei Starovoitov 2019-10-30 11222 const char prefix= [] =3D "btf_trace_"; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11223 int ret =3D 0, su= bprog =3D -1, i; 38207291604401 Martin KaFai Lau 2019-10-24 11224 const struct btf_= type *t; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11225 bool conservative= =3D true; 38207291604401 Martin KaFai Lau 2019-10-24 11226 const char *tname; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11227 struct btf *btf; f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11228 long ad= dr =3D 0; 38207291604401 Martin KaFai Lau 2019-10-24 11229 = f1b9509c2fb0ef Alexei Starovoitov 2019-10-30 11230 if (!btf_id) { afd82d19795ce2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11231 bpf_lo= g(log, "Tracing programs must provide btf_id\n"); f1b9509c2fb0ef Alexei Starovoitov 2019-10-30 11232 return -EINVAL; f1b9509c2fb0ef Alexei Starovoitov 2019-10-30 11233 } 0f8a745b60efb2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11234 btf =3D= dst_prog ? dst_prog->aux->btf : btf_vmlinux; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11235 if (!btf) { afd82d19795ce2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11236 bpf_lo= g(log, 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11237 "FENTRY/FEXIT p= rogram can only be attached to another program annotated with BTF\n"); 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11238 return -EINVAL; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11239 } 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11240 t =3D btf_type_by= _id(btf, btf_id); 38207291604401 Martin KaFai Lau 2019-10-24 11241 if (!t) { afd82d19795ce2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11242 bpf_lo= g(log, "attach_btf_id %u is invalid\n", btf_id); 38207291604401 Martin KaFai Lau 2019-10-24 11243 return -EINVAL; 38207291604401 Martin KaFai Lau 2019-10-24 11244 } 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11245 tname =3D btf_nam= e_by_offset(btf, t->name_off); f1b9509c2fb0ef Alexei Starovoitov 2019-10-30 11246 if (!tname) { afd82d19795ce2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11247 bpf_lo= g(log, "attach_btf_id %u doesn't have a name\n", btf_id); f1b9509c2fb0ef Alexei Starovoitov 2019-10-30 11248 return -EINVAL; f1b9509c2fb0ef Alexei Starovoitov 2019-10-30 11249 } 0f8a745b60efb2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 @11250 if (dst= _prog) { Check for NULL. 0f8a745b60efb2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11251 struct= bpf_prog_aux *aux =3D dst_prog->aux; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11252 = 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11253 for (i =3D 0; i = < aux->func_info_cnt; i++) 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11254 if (aux->func_i= nfo[i].type_id =3D=3D btf_id) { 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11255 subprog =3D i; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11256 break; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11257 } 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11258 if (subprog =3D= =3D -1) { afd82d19795ce2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11259 bpf_l= og(log, "Subprog %s doesn't exist\n", tname); 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11260 return -EINVAL; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11261 } 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11262 conservative =3D= aux->func_info_aux[subprog].unreliable; be8704ff07d237 Alexei Starovoitov 2020-01-20 11263 if (prog_extensi= on) { be8704ff07d237 Alexei Starovoitov 2020-01-20 11264 if (conservativ= e) { afd82d19795ce2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11265 bpf_= log(log, be8704ff07d237 Alexei Starovoitov 2020-01-20 11266 "Cannot repla= ce static functions\n"); be8704ff07d237 Alexei Starovoitov 2020-01-20 11267 return -EINVAL; be8704ff07d237 Alexei Starovoitov 2020-01-20 11268 } be8704ff07d237 Alexei Starovoitov 2020-01-20 11269 if (!prog->jit_= requested) { afd82d19795ce2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11270 bpf_= log(log, be8704ff07d237 Alexei Starovoitov 2020-01-20 11271 "Extension pr= ograms should be JITed\n"); be8704ff07d237 Alexei Starovoitov 2020-01-20 11272 return -EINVAL; be8704ff07d237 Alexei Starovoitov 2020-01-20 11273 } be8704ff07d237 Alexei Starovoitov 2020-01-20 11274 } 0f8a745b60efb2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11275 if (!d= st_prog->jited) { afd82d19795ce2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11276 bpf_l= og(log, "Can attach to only JITed progs\n"); be8704ff07d237 Alexei Starovoitov 2020-01-20 11277 return -EINVAL; be8704ff07d237 Alexei Starovoitov 2020-01-20 11278 } 0f8a745b60efb2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11279 if (ds= t_prog->type =3D=3D prog->type) { be8704ff07d237 Alexei Starovoitov 2020-01-20 11280 /* Cannot fentr= y/fexit another fentry/fexit program. be8704ff07d237 Alexei Starovoitov 2020-01-20 11281 * Cannot attac= h program extension to another extension. be8704ff07d237 Alexei Starovoitov 2020-01-20 11282 * It's ok to a= ttach fentry/fexit to extension program. be8704ff07d237 Alexei Starovoitov 2020-01-20 11283 */ afd82d19795ce2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11284 bpf_l= og(log, "Cannot recursively attach\n"); be8704ff07d237 Alexei Starovoitov 2020-01-20 11285 return -EINVAL; be8704ff07d237 Alexei Starovoitov 2020-01-20 11286 } 0f8a745b60efb2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11287 if (ds= t_prog->type =3D=3D BPF_PROG_TYPE_TRACING && be8704ff07d237 Alexei Starovoitov 2020-01-20 11288 prog_extensi= on && 0f8a745b60efb2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11289 (d= st_prog->expected_attach_type =3D=3D BPF_TRACE_FENTRY || 0f8a745b60efb2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11290 d= st_prog->expected_attach_type =3D=3D BPF_TRACE_FEXIT)) { be8704ff07d237 Alexei Starovoitov 2020-01-20 11291 /* Program exte= nsions can extend all program types be8704ff07d237 Alexei Starovoitov 2020-01-20 11292 * except fentr= y/fexit. The reason is the following. be8704ff07d237 Alexei Starovoitov 2020-01-20 11293 * The fentry/f= exit programs are used for performance be8704ff07d237 Alexei Starovoitov 2020-01-20 11294 * analysis, st= ats and can be attached to any program be8704ff07d237 Alexei Starovoitov 2020-01-20 11295 * type except = themselves. When extension program is be8704ff07d237 Alexei Starovoitov 2020-01-20 11296 * replacing XD= P function it is necessary to allow be8704ff07d237 Alexei Starovoitov 2020-01-20 11297 * performance = analysis of all functions. Both original be8704ff07d237 Alexei Starovoitov 2020-01-20 11298 * XDP program = and its program extension. Hence be8704ff07d237 Alexei Starovoitov 2020-01-20 11299 * attaching fe= ntry/fexit to BPF_PROG_TYPE_EXT is be8704ff07d237 Alexei Starovoitov 2020-01-20 11300 * allowed. If = extending of fentry/fexit was allowed it be8704ff07d237 Alexei Starovoitov 2020-01-20 11301 * would be pos= sible to create long call chain be8704ff07d237 Alexei Starovoitov 2020-01-20 11302 * fentry->exte= nsion->fentry->extension beyond be8704ff07d237 Alexei Starovoitov 2020-01-20 11303 * reasonable s= tack size. Hence extending fentry is not be8704ff07d237 Alexei Starovoitov 2020-01-20 11304 * allowed. be8704ff07d237 Alexei Starovoitov 2020-01-20 11305 */ afd82d19795ce2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11306 bpf_l= og(log, "Cannot extend fentry/fexit\n"); be8704ff07d237 Alexei Starovoitov 2020-01-20 11307 return -EINVAL; be8704ff07d237 Alexei Starovoitov 2020-01-20 11308 } 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11309 } else { be8704ff07d237 Alexei Starovoitov 2020-01-20 11310 if (prog_extensi= on) { afd82d19795ce2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11311 bpf_l= og(log, "Cannot replace kernel functions\n"); be8704ff07d237 Alexei Starovoitov 2020-01-20 11312 return -EINVAL; be8704ff07d237 Alexei Starovoitov 2020-01-20 11313 } >>From here we know that "dst_prog" can only be NULL when "prog_extension" is NULL. 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11314 } f1b9509c2fb0ef Alexei Starovoitov 2019-10-30 11315 = f1b9509c2fb0ef Alexei Starovoitov 2019-10-30 11316 switch (prog->exp= ected_attach_type) { f1b9509c2fb0ef Alexei Starovoitov 2019-10-30 11317 case BPF_TRACE_RA= W_TP: 0f8a745b60efb2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11318 if (ds= t_prog) { afd82d19795ce2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11319 bpf_l= og(log, 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11320 "Only FENTRY/F= EXIT progs are attachable to another BPF prog\n"); 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11321 return -EINVAL; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11322 } 38207291604401 Martin KaFai Lau 2019-10-24 11323 if (!btf_type_is= _typedef(t)) { afd82d19795ce2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11324 bpf_l= og(log, "attach_btf_id %u is not a typedef\n", 38207291604401 Martin KaFai Lau 2019-10-24 11325 btf_id); 38207291604401 Martin KaFai Lau 2019-10-24 11326 return -EINVAL; 38207291604401 Martin KaFai Lau 2019-10-24 11327 } f1b9509c2fb0ef Alexei Starovoitov 2019-10-30 11328 if (strncmp(pref= ix, tname, sizeof(prefix) - 1)) { afd82d19795ce2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11329 bpf_l= og(log, "attach_btf_id %u points to wrong type name %s\n", 38207291604401 Martin KaFai Lau 2019-10-24 11330 btf_id, tname); 38207291604401 Martin KaFai Lau 2019-10-24 11331 return -EINVAL; 38207291604401 Martin KaFai Lau 2019-10-24 11332 } 38207291604401 Martin KaFai Lau 2019-10-24 11333 tname +=3D sizeo= f(prefix) - 1; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11334 t =3D btf_type_b= y_id(btf, t->type); 38207291604401 Martin KaFai Lau 2019-10-24 11335 if (!btf_type_is= _ptr(t)) 38207291604401 Martin KaFai Lau 2019-10-24 11336 /* should never= happen in valid vmlinux build */ 38207291604401 Martin KaFai Lau 2019-10-24 11337 return -EINVAL; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11338 t =3D btf_type_b= y_id(btf, t->type); 38207291604401 Martin KaFai Lau 2019-10-24 11339 if (!btf_type_is= _func_proto(t)) 38207291604401 Martin KaFai Lau 2019-10-24 11340 /* should never= happen in valid vmlinux build */ 38207291604401 Martin KaFai Lau 2019-10-24 11341 return -EINVAL; 38207291604401 Martin KaFai Lau 2019-10-24 11342 = f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11343 break; 15d83c4d7cef5c Yonghong Song 2020-05-09 11344 case BPF_TRACE_IT= ER: 15d83c4d7cef5c Yonghong Song 2020-05-09 11345 if (!btf_type_is= _func(t)) { afd82d19795ce2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11346 bpf_l= og(log, "attach_btf_id %u is not a function\n", 15d83c4d7cef5c Yonghong Song 2020-05-09 11347 btf_id); 15d83c4d7cef5c Yonghong Song 2020-05-09 11348 return -EINVAL; 15d83c4d7cef5c Yonghong Song 2020-05-09 11349 } 15d83c4d7cef5c Yonghong Song 2020-05-09 11350 t =3D btf_type_b= y_id(btf, t->type); 15d83c4d7cef5c Yonghong Song 2020-05-09 11351 if (!btf_type_is= _func_proto(t)) 15d83c4d7cef5c Yonghong Song 2020-05-09 11352 return -EINVAL; f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11353 ret = =3D btf_distill_func_proto(log, btf, t, tname, &tgt_info->fmodel); f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11354 if (re= t) 15d83c4d7cef5c Yonghong Song 2020-05-09 11355 return ret; f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11356 break; be8704ff07d237 Alexei Starovoitov 2020-01-20 11357 default: be8704ff07d237 Alexei Starovoitov 2020-01-20 11358 if (!prog_extens= ion) be8704ff07d237 Alexei Starovoitov 2020-01-20 11359 return -EINVAL; df561f6688fef7 Gustavo A. R. Silva 2020-08-23 11360 fallthrough; ae24082331d9bb KP Singh 2020-03-04 11361 case BPF_MODIFY_R= ETURN: 9e4e01dfd3254c KP Singh 2020-03-29 11362 case BPF_LSM_MAC: fec56f5890d93f Alexei Starovoitov 2019-11-14 11363 case BPF_TRACE_FE= NTRY: fec56f5890d93f Alexei Starovoitov 2019-11-14 11364 case BPF_TRACE_FE= XIT: fec56f5890d93f Alexei Starovoitov 2019-11-14 11365 if (!btf_type_is= _func(t)) { afd82d19795ce2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11366 bpf_l= og(log, "attach_btf_id %u is not a function\n", fec56f5890d93f Alexei Starovoitov 2019-11-14 11367 btf_id); fec56f5890d93f Alexei Starovoitov 2019-11-14 11368 return -EINVAL; fec56f5890d93f Alexei Starovoitov 2019-11-14 11369 } be8704ff07d237 Alexei Starovoitov 2020-01-20 11370 if (prog_extensi= on && afd82d19795ce2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11371 bt= f_check_type_match(log, prog, btf, t)) If "prog_extension" can be NULL or non-NULL. be8704ff07d237 Alexei Starovoitov 2020-01-20 11372 return -EINVAL; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11373 t =3D btf_type_b= y_id(btf, t->type); fec56f5890d93f Alexei Starovoitov 2019-11-14 11374 if (!btf_type_is= _func_proto(t)) fec56f5890d93f Alexei Starovoitov 2019-11-14 11375 return -EINVAL; f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11376 = 7c9bfdeec82c49 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11377 if ((p= rog->aux->saved_dst_prog_type && 7c9bfdeec82c49 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 @11378 p= rog->aux->saved_dst_prog_type !=3D dst_prog->type) || = ^^^^^^^^^^^^^^ Unchecked dereference. 7c9bfdeec82c49 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11379 (p= rog->aux->saved_dst_attach_type && 7c9bfdeec82c49 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11380 p= rog->aux->saved_dst_attach_type !=3D dst_prog->expected_attach_type)) 7c9bfdeec82c49 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11381 retur= n -EINVAL; 7c9bfdeec82c49 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11382 = 0f8a745b60efb2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11383 if (ds= t_prog && conservative) 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11384 t =3D NULL; f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11385 = f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11386 ret = =3D btf_distill_func_proto(log, btf, t, tname, &tgt_info->fmodel); fec56f5890d93f Alexei Starovoitov 2019-11-14 11387 if (ret < 0) f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11388 retur= n ret; f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11389 = 0f8a745b60efb2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11390 if (ds= t_prog) { e9eeec58c992c4 Yonghong Song 2019-12-04 11391 if (subprog =3D= =3D 0) 0f8a745b60efb2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11392 addr= =3D (long) dst_prog->bpf_func; e9eeec58c992c4 Yonghong Song 2019-12-04 11393 else 0f8a745b60efb2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11394 addr= =3D (long) dst_prog->aux->func[subprog]->bpf_func; 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11395 } else { fec56f5890d93f Alexei Starovoitov 2019-11-14 11396 addr =3D kallsy= ms_lookup_name(tname); fec56f5890d93f Alexei Starovoitov 2019-11-14 11397 if (!addr) { afd82d19795ce2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11398 bpf_= log(log, fec56f5890d93f Alexei Starovoitov 2019-11-14 11399 "The address = of function %s cannot be found\n", fec56f5890d93f Alexei Starovoitov 2019-11-14 11400 tname); f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11401 retu= rn -ENOENT; fec56f5890d93f Alexei Starovoitov 2019-11-14 11402 } 5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11403 } 18644cec714aab Alexei Starovoitov 2020-05-28 11404 = 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11405 if (prog->aux->s= leepable) { 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11406 ret =3D -EINVAL; 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11407 switch (prog->t= ype) { 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11408 case BPF_PROG_T= YPE_TRACING: 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11409 /* fentry/fexi= t/fmod_ret progs can be sleepable only if they are 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11410 * attached to= ALLOW_ERROR_INJECTION and are not in denylist. 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11411 */ 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11412 if (!check_non= _sleepable_error_inject(btf_id) && 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11413 within_err= or_injection_list(addr)) 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11414 ret =3D 0; 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11415 break; 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11416 case BPF_PROG_T= YPE_LSM: 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11417 /* LSM progs c= heck that they are attached to bpf_lsm_*() funcs. 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11418 * Only some o= f them are sleepable. 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11419 */ 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11420 if (check_slee= pable_lsm_hook(btf_id)) 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11421 ret =3D 0; 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11422 break; 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11423 default: 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11424 break; 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11425 } f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11426 if (r= et) { f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11427 bpf_= log(log, "%s is not sleepable\n", tname); f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11428 retu= rn ret; f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11429 } 1e6c62a8821557 Alexei Starovoitov 2020-08-27 11430 } else if (prog-= >expected_attach_type =3D=3D BPF_MODIFY_RETURN) { 0f8a745b60efb2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11431 if (d= st_prog) { afd82d19795ce2 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11432 bpf_= log(log, "can't modify return codes of BPF programs\n"); f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11433 retu= rn -EINVAL; 81a09cc12e4a91 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11434 } f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11435 ret = =3D check_attach_modify_return(addr, tname); f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11436 if (r= et) { f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11437 bpf_= log(log, "%s() is not modifiable\n", tname); f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11438 retu= rn ret; 18644cec714aab Alexei Starovoitov 2020-05-28 11439 } f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11440 } f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11441 = f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11442 break; f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11443 } f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11444 tgt_inf= o->tgt_addr =3D addr; f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11445 tgt_inf= o->tgt_name =3D tname; f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11446 tgt_inf= o->tgt_type =3D t; f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11447 return = 0; f96b5387a45625 Toke H=C3=B8iland-J=C3=B8rgensen 2020-09-25 11448 } --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org --===============6975713368333992343== Content-Type: application/gzip MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="config.gz" 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 --===============6975713368333992343==--