Re: [PATCH bpf-next v9 05/11] bpf: support attaching freplace programs to multiple attach points
by Dan Carpenter
Hi Toke,
url: https://github.com/0day-ci/linux/commits/Toke-H-iland-J-rgensen/bpf-Suppo...
base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master
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 <lkp(a)intel.com>
Reported-by: Dan Carpenter <dan.carpenter(a)oracle.com>
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øiland-Jørgensen 2020-09-25 11215 int bpf_check_attach_target(struct bpf_verifier_log *log,
f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11216 const struct bpf_prog *prog,
0f8a745b60efb2 Toke Høiland-Jørgensen 2020-09-25 11217 const struct bpf_prog *dst_prog,
f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11218 u32 btf_id,
f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11219 struct bpf_attach_target_info *tgt_info)
38207291604401 Martin KaFai Lau 2019-10-24 11220 {
be8704ff07d237 Alexei Starovoitov 2020-01-20 11221 bool prog_extension = prog->type == BPF_PROG_TYPE_EXT;
f1b9509c2fb0ef Alexei Starovoitov 2019-10-30 11222 const char prefix[] = "btf_trace_";
5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11223 int ret = 0, subprog = -1, i;
38207291604401 Martin KaFai Lau 2019-10-24 11224 const struct btf_type *t;
5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11225 bool conservative = 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øiland-Jørgensen 2020-09-25 11228 long addr = 0;
38207291604401 Martin KaFai Lau 2019-10-24 11229
f1b9509c2fb0ef Alexei Starovoitov 2019-10-30 11230 if (!btf_id) {
afd82d19795ce2 Toke Høiland-Jørgensen 2020-09-25 11231 bpf_log(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øiland-Jørgensen 2020-09-25 11234 btf = dst_prog ? dst_prog->aux->btf : btf_vmlinux;
5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11235 if (!btf) {
afd82d19795ce2 Toke Høiland-Jørgensen 2020-09-25 11236 bpf_log(log,
5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11237 "FENTRY/FEXIT program 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 = btf_type_by_id(btf, btf_id);
38207291604401 Martin KaFai Lau 2019-10-24 11241 if (!t) {
afd82d19795ce2 Toke Høiland-Jørgensen 2020-09-25 11242 bpf_log(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 = btf_name_by_offset(btf, t->name_off);
f1b9509c2fb0ef Alexei Starovoitov 2019-10-30 11246 if (!tname) {
afd82d19795ce2 Toke Høiland-Jørgensen 2020-09-25 11247 bpf_log(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øiland-Jørgensen 2020-09-25 @11250 if (dst_prog) {
Check for NULL.
0f8a745b60efb2 Toke Høiland-Jørgensen 2020-09-25 11251 struct bpf_prog_aux *aux = dst_prog->aux;
5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11252
5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11253 for (i = 0; i < aux->func_info_cnt; i++)
5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11254 if (aux->func_info[i].type_id == btf_id) {
5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11255 subprog = 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 == -1) {
afd82d19795ce2 Toke Høiland-Jørgensen 2020-09-25 11259 bpf_log(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 = aux->func_info_aux[subprog].unreliable;
be8704ff07d237 Alexei Starovoitov 2020-01-20 11263 if (prog_extension) {
be8704ff07d237 Alexei Starovoitov 2020-01-20 11264 if (conservative) {
afd82d19795ce2 Toke Høiland-Jørgensen 2020-09-25 11265 bpf_log(log,
be8704ff07d237 Alexei Starovoitov 2020-01-20 11266 "Cannot replace 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øiland-Jørgensen 2020-09-25 11270 bpf_log(log,
be8704ff07d237 Alexei Starovoitov 2020-01-20 11271 "Extension programs 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øiland-Jørgensen 2020-09-25 11275 if (!dst_prog->jited) {
afd82d19795ce2 Toke Høiland-Jørgensen 2020-09-25 11276 bpf_log(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øiland-Jørgensen 2020-09-25 11279 if (dst_prog->type == prog->type) {
be8704ff07d237 Alexei Starovoitov 2020-01-20 11280 /* Cannot fentry/fexit another fentry/fexit program.
be8704ff07d237 Alexei Starovoitov 2020-01-20 11281 * Cannot attach program extension to another extension.
be8704ff07d237 Alexei Starovoitov 2020-01-20 11282 * It's ok to attach fentry/fexit to extension program.
be8704ff07d237 Alexei Starovoitov 2020-01-20 11283 */
afd82d19795ce2 Toke Høiland-Jørgensen 2020-09-25 11284 bpf_log(log, "Cannot recursively attach\n");
be8704ff07d237 Alexei Starovoitov 2020-01-20 11285 return -EINVAL;
be8704ff07d237 Alexei Starovoitov 2020-01-20 11286 }
0f8a745b60efb2 Toke Høiland-Jørgensen 2020-09-25 11287 if (dst_prog->type == BPF_PROG_TYPE_TRACING &&
be8704ff07d237 Alexei Starovoitov 2020-01-20 11288 prog_extension &&
0f8a745b60efb2 Toke Høiland-Jørgensen 2020-09-25 11289 (dst_prog->expected_attach_type == BPF_TRACE_FENTRY ||
0f8a745b60efb2 Toke Høiland-Jørgensen 2020-09-25 11290 dst_prog->expected_attach_type == BPF_TRACE_FEXIT)) {
be8704ff07d237 Alexei Starovoitov 2020-01-20 11291 /* Program extensions can extend all program types
be8704ff07d237 Alexei Starovoitov 2020-01-20 11292 * except fentry/fexit. The reason is the following.
be8704ff07d237 Alexei Starovoitov 2020-01-20 11293 * The fentry/fexit programs are used for performance
be8704ff07d237 Alexei Starovoitov 2020-01-20 11294 * analysis, stats 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 XDP 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 fentry/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 possible to create long call chain
be8704ff07d237 Alexei Starovoitov 2020-01-20 11302 * fentry->extension->fentry->extension beyond
be8704ff07d237 Alexei Starovoitov 2020-01-20 11303 * reasonable stack size. Hence extending fentry is not
be8704ff07d237 Alexei Starovoitov 2020-01-20 11304 * allowed.
be8704ff07d237 Alexei Starovoitov 2020-01-20 11305 */
afd82d19795ce2 Toke Høiland-Jørgensen 2020-09-25 11306 bpf_log(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_extension) {
afd82d19795ce2 Toke Høiland-Jørgensen 2020-09-25 11311 bpf_log(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->expected_attach_type) {
f1b9509c2fb0ef Alexei Starovoitov 2019-10-30 11317 case BPF_TRACE_RAW_TP:
0f8a745b60efb2 Toke Høiland-Jørgensen 2020-09-25 11318 if (dst_prog) {
afd82d19795ce2 Toke Høiland-Jørgensen 2020-09-25 11319 bpf_log(log,
5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11320 "Only FENTRY/FEXIT 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øiland-Jørgensen 2020-09-25 11324 bpf_log(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(prefix, tname, sizeof(prefix) - 1)) {
afd82d19795ce2 Toke Høiland-Jørgensen 2020-09-25 11329 bpf_log(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 += sizeof(prefix) - 1;
5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11334 t = btf_type_by_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 = btf_type_by_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øiland-Jørgensen 2020-09-25 11343 break;
15d83c4d7cef5c Yonghong Song 2020-05-09 11344 case BPF_TRACE_ITER:
15d83c4d7cef5c Yonghong Song 2020-05-09 11345 if (!btf_type_is_func(t)) {
afd82d19795ce2 Toke Høiland-Jørgensen 2020-09-25 11346 bpf_log(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 = btf_type_by_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øiland-Jørgensen 2020-09-25 11353 ret = btf_distill_func_proto(log, btf, t, tname, &tgt_info->fmodel);
f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11354 if (ret)
15d83c4d7cef5c Yonghong Song 2020-05-09 11355 return ret;
f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11356 break;
be8704ff07d237 Alexei Starovoitov 2020-01-20 11357 default:
be8704ff07d237 Alexei Starovoitov 2020-01-20 11358 if (!prog_extension)
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_RETURN:
9e4e01dfd3254c KP Singh 2020-03-29 11362 case BPF_LSM_MAC:
fec56f5890d93f Alexei Starovoitov 2019-11-14 11363 case BPF_TRACE_FENTRY:
fec56f5890d93f Alexei Starovoitov 2019-11-14 11364 case BPF_TRACE_FEXIT:
fec56f5890d93f Alexei Starovoitov 2019-11-14 11365 if (!btf_type_is_func(t)) {
afd82d19795ce2 Toke Høiland-Jørgensen 2020-09-25 11366 bpf_log(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_extension &&
afd82d19795ce2 Toke Høiland-Jørgensen 2020-09-25 11371 btf_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 = btf_type_by_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øiland-Jørgensen 2020-09-25 11376
7c9bfdeec82c49 Toke Høiland-Jørgensen 2020-09-25 11377 if ((prog->aux->saved_dst_prog_type &&
7c9bfdeec82c49 Toke Høiland-Jørgensen 2020-09-25 @11378 prog->aux->saved_dst_prog_type != dst_prog->type) ||
^^^^^^^^^^^^^^
Unchecked dereference.
7c9bfdeec82c49 Toke Høiland-Jørgensen 2020-09-25 11379 (prog->aux->saved_dst_attach_type &&
7c9bfdeec82c49 Toke Høiland-Jørgensen 2020-09-25 11380 prog->aux->saved_dst_attach_type != dst_prog->expected_attach_type))
7c9bfdeec82c49 Toke Høiland-Jørgensen 2020-09-25 11381 return -EINVAL;
7c9bfdeec82c49 Toke Høiland-Jørgensen 2020-09-25 11382
0f8a745b60efb2 Toke Høiland-Jørgensen 2020-09-25 11383 if (dst_prog && conservative)
5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11384 t = NULL;
f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11385
f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11386 ret = btf_distill_func_proto(log, btf, t, tname, &tgt_info->fmodel);
fec56f5890d93f Alexei Starovoitov 2019-11-14 11387 if (ret < 0)
f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11388 return ret;
f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11389
0f8a745b60efb2 Toke Høiland-Jørgensen 2020-09-25 11390 if (dst_prog) {
e9eeec58c992c4 Yonghong Song 2019-12-04 11391 if (subprog == 0)
0f8a745b60efb2 Toke Høiland-Jørgensen 2020-09-25 11392 addr = (long) dst_prog->bpf_func;
e9eeec58c992c4 Yonghong Song 2019-12-04 11393 else
0f8a745b60efb2 Toke Høiland-Jørgensen 2020-09-25 11394 addr = (long) dst_prog->aux->func[subprog]->bpf_func;
5b92a28aae4dd0 Alexei Starovoitov 2019-11-14 11395 } else {
fec56f5890d93f Alexei Starovoitov 2019-11-14 11396 addr = kallsyms_lookup_name(tname);
fec56f5890d93f Alexei Starovoitov 2019-11-14 11397 if (!addr) {
afd82d19795ce2 Toke Høiland-Jørgensen 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øiland-Jørgensen 2020-09-25 11401 return -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->sleepable) {
1e6c62a8821557 Alexei Starovoitov 2020-08-27 11406 ret = -EINVAL;
1e6c62a8821557 Alexei Starovoitov 2020-08-27 11407 switch (prog->type) {
1e6c62a8821557 Alexei Starovoitov 2020-08-27 11408 case BPF_PROG_TYPE_TRACING:
1e6c62a8821557 Alexei Starovoitov 2020-08-27 11409 /* fentry/fexit/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_error_injection_list(addr))
1e6c62a8821557 Alexei Starovoitov 2020-08-27 11414 ret = 0;
1e6c62a8821557 Alexei Starovoitov 2020-08-27 11415 break;
1e6c62a8821557 Alexei Starovoitov 2020-08-27 11416 case BPF_PROG_TYPE_LSM:
1e6c62a8821557 Alexei Starovoitov 2020-08-27 11417 /* LSM progs check that they are attached to bpf_lsm_*() funcs.
1e6c62a8821557 Alexei Starovoitov 2020-08-27 11418 * Only some of them are sleepable.
1e6c62a8821557 Alexei Starovoitov 2020-08-27 11419 */
1e6c62a8821557 Alexei Starovoitov 2020-08-27 11420 if (check_sleepable_lsm_hook(btf_id))
1e6c62a8821557 Alexei Starovoitov 2020-08-27 11421 ret = 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øiland-Jørgensen 2020-09-25 11426 if (ret) {
f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11427 bpf_log(log, "%s is not sleepable\n", tname);
f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11428 return ret;
f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11429 }
1e6c62a8821557 Alexei Starovoitov 2020-08-27 11430 } else if (prog->expected_attach_type == BPF_MODIFY_RETURN) {
0f8a745b60efb2 Toke Høiland-Jørgensen 2020-09-25 11431 if (dst_prog) {
afd82d19795ce2 Toke Høiland-Jørgensen 2020-09-25 11432 bpf_log(log, "can't modify return codes of BPF programs\n");
f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11433 return -EINVAL;
81a09cc12e4a91 Toke Høiland-Jørgensen 2020-09-25 11434 }
f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11435 ret = check_attach_modify_return(addr, tname);
f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11436 if (ret) {
f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11437 bpf_log(log, "%s() is not modifiable\n", tname);
f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11438 return ret;
18644cec714aab Alexei Starovoitov 2020-05-28 11439 }
f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11440 }
f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11441
f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11442 break;
f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11443 }
f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11444 tgt_info->tgt_addr = addr;
f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11445 tgt_info->tgt_name = tname;
f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11446 tgt_info->tgt_type = t;
f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11447 return 0;
f96b5387a45625 Toke Høiland-Jørgensen 2020-09-25 11448 }
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 7 months
[sashal-linux-stable:queue-4.19 37/242] drivers/mtd/ubi/wl.c:314:27: warning: variable 'prev_e' set but not used
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/sashal/linux-stable.git queue-4.19
head: 76372ca86ebe9f76848cc20dee55115508601a3a
commit: 6011fc2046d06ca9bf7e5935a13491ac4f57120d [37/242] ubi: Fix producing anchor PEBs
config: arc-randconfig-r002-20200929 (attached as .config)
compiler: arc-elf-gcc (GCC) 9.3.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://git.kernel.org/pub/scm/linux/kernel/git/sashal/linux-stable.git/c...
git remote add sashal-linux-stable https://git.kernel.org/pub/scm/linux/kernel/git/sashal/linux-stable.git
git fetch --no-tags sashal-linux-stable queue-4.19
git checkout 6011fc2046d06ca9bf7e5935a13491ac4f57120d
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arc
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>):
drivers/mtd/ubi/wl.c: In function 'find_wl_entry':
>> drivers/mtd/ubi/wl.c:314:27: warning: variable 'prev_e' set but not used [-Wunused-but-set-variable]
314 | struct ubi_wl_entry *e, *prev_e = NULL;
| ^~~~~~
drivers/mtd/ubi/wl.c:577: warning: Function parameter or member 'nested' not described in 'schedule_erase'
drivers/mtd/ubi/wl.c:1055: warning: Excess function parameter 'shutdown' description in '__erase_worker'
vim +/prev_e +314 drivers/mtd/ubi/wl.c
801c135ce73d5d Artem B. Bityutskiy 2006-06-27 300
801c135ce73d5d Artem B. Bityutskiy 2006-06-27 301 /**
801c135ce73d5d Artem B. Bityutskiy 2006-06-27 302 * find_wl_entry - find wear-leveling entry closest to certain erase counter.
8199b901a31b6e Richard Weinberger 2012-09-26 303 * @ubi: UBI device description object
801c135ce73d5d Artem B. Bityutskiy 2006-06-27 304 * @root: the RB-tree where to look for
add8287e3fa216 Artem Bityutskiy 2012-03-07 305 * @diff: maximum possible difference from the smallest erase counter
801c135ce73d5d Artem B. Bityutskiy 2006-06-27 306 *
801c135ce73d5d Artem B. Bityutskiy 2006-06-27 307 * This function looks for a wear leveling entry with erase counter closest to
add8287e3fa216 Artem Bityutskiy 2012-03-07 308 * min + @diff, where min is the smallest erase counter.
801c135ce73d5d Artem B. Bityutskiy 2006-06-27 309 */
8199b901a31b6e Richard Weinberger 2012-09-26 310 static struct ubi_wl_entry *find_wl_entry(struct ubi_device *ubi,
8199b901a31b6e Richard Weinberger 2012-09-26 311 struct rb_root *root, int diff)
801c135ce73d5d Artem B. Bityutskiy 2006-06-27 312 {
801c135ce73d5d Artem B. Bityutskiy 2006-06-27 313 struct rb_node *p;
8199b901a31b6e Richard Weinberger 2012-09-26 @314 struct ubi_wl_entry *e, *prev_e = NULL;
add8287e3fa216 Artem Bityutskiy 2012-03-07 315 int max;
801c135ce73d5d Artem B. Bityutskiy 2006-06-27 316
23553b2c08c9b6 Xiaochuan-Xu 2008-12-09 317 e = rb_entry(rb_first(root), struct ubi_wl_entry, u.rb);
add8287e3fa216 Artem Bityutskiy 2012-03-07 318 max = e->ec + diff;
801c135ce73d5d Artem B. Bityutskiy 2006-06-27 319
801c135ce73d5d Artem B. Bityutskiy 2006-06-27 320 p = root->rb_node;
801c135ce73d5d Artem B. Bityutskiy 2006-06-27 321 while (p) {
801c135ce73d5d Artem B. Bityutskiy 2006-06-27 322 struct ubi_wl_entry *e1;
801c135ce73d5d Artem B. Bityutskiy 2006-06-27 323
23553b2c08c9b6 Xiaochuan-Xu 2008-12-09 324 e1 = rb_entry(p, struct ubi_wl_entry, u.rb);
801c135ce73d5d Artem B. Bityutskiy 2006-06-27 325 if (e1->ec >= max)
801c135ce73d5d Artem B. Bityutskiy 2006-06-27 326 p = p->rb_left;
801c135ce73d5d Artem B. Bityutskiy 2006-06-27 327 else {
801c135ce73d5d Artem B. Bityutskiy 2006-06-27 328 p = p->rb_right;
8199b901a31b6e Richard Weinberger 2012-09-26 329 prev_e = e;
801c135ce73d5d Artem B. Bityutskiy 2006-06-27 330 e = e1;
801c135ce73d5d Artem B. Bityutskiy 2006-06-27 331 }
801c135ce73d5d Artem B. Bityutskiy 2006-06-27 332 }
801c135ce73d5d Artem B. Bityutskiy 2006-06-27 333
8199b901a31b6e Richard Weinberger 2012-09-26 334 return e;
8199b901a31b6e Richard Weinberger 2012-09-26 335 }
8199b901a31b6e Richard Weinberger 2012-09-26 336
:::::: The code at line 314 was first introduced by commit
:::::: 8199b901a31b6e89b63842643f644fc05b403b20 UBI: Add fastmap support to the WL sub-system
:::::: TO: Richard Weinberger <richard(a)nod.at>
:::::: CC: Artem Bityutskiy <artem.bityutskiy(a)linux.intel.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 7 months
Re: [PATCH v4 2/4] leds: Add driver for Qualcomm LPG
by kernel test robot
Hi Bjorn,
I love your patch! Yet something to improve:
[auto build test ERROR on pavel-linux-leds/for-next]
[also build test ERROR on robh/for-next v5.9-rc7 next-20200928]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Bjorn-Andersson/Qualcomm-Light-P...
base: git://git.kernel.org/pub/scm/linux/kernel/git/pavel/linux-leds.git for-next
config: microblaze-randconfig-r004-20200929 (attached as .config)
compiler: microblaze-linux-gcc (GCC) 9.3.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/0day-ci/linux/commit/5937b69205a78e5ed73d8e8e279eccaad...
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Bjorn-Andersson/Qualcomm-Light-Pulse-Generator/20200929-111512
git checkout 5937b69205a78e5ed73d8e8e279eccaad245b1eb
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=microblaze
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
microblaze-linux-ld: drivers/leds/leds-qcom-lpg.o: in function `lpg_pwm_apply':
>> drivers/leds/leds-qcom-lpg.c:814: undefined reference to `__udivdi3'
>> microblaze-linux-ld: drivers/leds/leds-qcom-lpg.c:815: undefined reference to `__udivdi3'
vim +814 drivers/leds/leds-qcom-lpg.c
807
808 static int lpg_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
809 const struct pwm_state *state)
810 {
811 struct lpg *lpg = container_of(chip, struct lpg, pwm);
812 struct lpg_channel *chan = &lpg->channels[pwm->hwpwm];
813
> 814 lpg_calc_freq(chan, state->period / NSEC_PER_USEC);
> 815 lpg_calc_duty(chan, state->duty_cycle / NSEC_PER_USEC);
816 chan->enabled = state->enabled;
817
818 lpg_apply(chan);
819
820 triled_set(lpg, chan->triled_mask, chan->enabled);
821
822 return 0;
823 }
824
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 7 months
arch/powerpc/kexec/core.c:246:29: sparse: sparse: incorrect type in assignment (different base types)
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: fb0155a09b0224a7147cb07a4ce6034c8d29667f
commit: 793b08e2efff3ec020c5c5861d00ed394fcdd488 powerpc/kexec: Move kexec files into a dedicated subdir.
date: 10 months ago
config: powerpc-randconfig-s032-20200929 (attached as .config)
compiler: powerpc-linux-gcc (GCC) 9.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.2-201-g24bdaac6-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit...
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 793b08e2efff3ec020c5c5861d00ed394fcdd488
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=powerpc
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
>> arch/powerpc/kexec/core.c:246:29: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long static [addressable] [toplevel] [usertype] crashk_base @@ got restricted __be32 [usertype] @@
arch/powerpc/kexec/core.c:246:29: sparse: expected unsigned long long static [addressable] [toplevel] [usertype] crashk_base
arch/powerpc/kexec/core.c:246:29: sparse: got restricted __be32 [usertype]
>> arch/powerpc/kexec/core.c:248:29: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long static [addressable] [toplevel] [usertype] crashk_size @@ got restricted __be32 [usertype] @@
arch/powerpc/kexec/core.c:248:29: sparse: expected unsigned long long static [addressable] [toplevel] [usertype] crashk_size
arch/powerpc/kexec/core.c:248:29: sparse: got restricted __be32 [usertype]
arch/powerpc/kexec/core.c:256:19: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long static [addressable] [toplevel] mem_limit @@ got restricted __be32 [usertype] @@
arch/powerpc/kexec/core.c:256:19: sparse: expected unsigned long long static [addressable] [toplevel] mem_limit
arch/powerpc/kexec/core.c:256:19: sparse: got restricted __be32 [usertype]
>> arch/powerpc/kexec/core.c:272:20: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long static [addressable] [toplevel] [usertype] kernel_end @@ got restricted __be32 [usertype] @@
arch/powerpc/kexec/core.c:272:20: sparse: expected unsigned long long static [addressable] [toplevel] [usertype] kernel_end
arch/powerpc/kexec/core.c:272:20: sparse: got restricted __be32 [usertype]
vim +246 arch/powerpc/kexec/core.c
ea961a828fe7250 arch/powerpc/kernel/machine_kexec.c Anton Blanchard 2014-01-22 235
6f29c3298b18216 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth 2008-12-17 236 static void __init export_crashk_values(struct device_node *node)
6f29c3298b18216 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth 2008-12-17 237 {
6f29c3298b18216 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth 2008-12-17 238 /* There might be existing crash kernel properties, but we can't
6f29c3298b18216 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth 2008-12-17 239 * be sure what's in them, so remove them. */
925e2d1ded80fcc arch/powerpc/kernel/machine_kexec.c Suraj Jitindar Singh 2016-04-28 240 of_remove_property(node, of_find_property(node,
925e2d1ded80fcc arch/powerpc/kernel/machine_kexec.c Suraj Jitindar Singh 2016-04-28 241 "linux,crashkernel-base", NULL));
925e2d1ded80fcc arch/powerpc/kernel/machine_kexec.c Suraj Jitindar Singh 2016-04-28 242 of_remove_property(node, of_find_property(node,
925e2d1ded80fcc arch/powerpc/kernel/machine_kexec.c Suraj Jitindar Singh 2016-04-28 243 "linux,crashkernel-size", NULL));
6f29c3298b18216 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth 2008-12-17 244
6f29c3298b18216 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth 2008-12-17 245 if (crashk_res.start != 0) {
ea961a828fe7250 arch/powerpc/kernel/machine_kexec.c Anton Blanchard 2014-01-22 @246 crashk_base = cpu_to_be_ulong(crashk_res.start),
79d1c712958f943 arch/powerpc/kernel/machine_kexec.c Nathan Fontenot 2012-10-02 247 of_add_property(node, &crashk_base_prop);
ea961a828fe7250 arch/powerpc/kernel/machine_kexec.c Anton Blanchard 2014-01-22 @248 crashk_size = cpu_to_be_ulong(resource_size(&crashk_res));
79d1c712958f943 arch/powerpc/kernel/machine_kexec.c Nathan Fontenot 2012-10-02 249 of_add_property(node, &crashk_size_prop);
6f29c3298b18216 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth 2008-12-17 250 }
4bc77a5ed215b4e arch/powerpc/kernel/machine_kexec.c Suzuki Poulose 2012-08-21 251
4bc77a5ed215b4e arch/powerpc/kernel/machine_kexec.c Suzuki Poulose 2012-08-21 252 /*
4bc77a5ed215b4e arch/powerpc/kernel/machine_kexec.c Suzuki Poulose 2012-08-21 253 * memory_limit is required by the kexec-tools to limit the
4bc77a5ed215b4e arch/powerpc/kernel/machine_kexec.c Suzuki Poulose 2012-08-21 254 * crash regions to the actual memory used.
4bc77a5ed215b4e arch/powerpc/kernel/machine_kexec.c Suzuki Poulose 2012-08-21 255 */
ea961a828fe7250 arch/powerpc/kernel/machine_kexec.c Anton Blanchard 2014-01-22 256 mem_limit = cpu_to_be_ulong(memory_limit);
79d1c712958f943 arch/powerpc/kernel/machine_kexec.c Nathan Fontenot 2012-10-02 257 of_update_property(node, &memory_limit_prop);
6f29c3298b18216 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth 2008-12-17 258 }
6f29c3298b18216 arch/powerpc/kernel/machine_kexec.c Dale Farnsworth 2008-12-17 259
2e8e4f5b80e101d arch/powerpc/kernel/machine_kexec.c Dale Farnsworth 2008-12-16 260 static int __init kexec_setup(void)
2e8e4f5b80e101d arch/powerpc/kernel/machine_kexec.c Dale Farnsworth 2008-12-16 261 {
2e8e4f5b80e101d arch/powerpc/kernel/machine_kexec.c Dale Farnsworth 2008-12-16 262 struct device_node *node;
2e8e4f5b80e101d arch/powerpc/kernel/machine_kexec.c Dale Farnsworth 2008-12-16 263
2e8e4f5b80e101d arch/powerpc/kernel/machine_kexec.c Dale Farnsworth 2008-12-16 264 node = of_find_node_by_path("/chosen");
2e8e4f5b80e101d arch/powerpc/kernel/machine_kexec.c Dale Farnsworth 2008-12-16 265 if (!node)
2e8e4f5b80e101d arch/powerpc/kernel/machine_kexec.c Dale Farnsworth 2008-12-16 266 return -ENOENT;
2e8e4f5b80e101d arch/powerpc/kernel/machine_kexec.c Dale Farnsworth 2008-12-16 267
2e8e4f5b80e101d arch/powerpc/kernel/machine_kexec.c Dale Farnsworth 2008-12-16 268 /* remove any stale properties so ours can be found */
925e2d1ded80fcc arch/powerpc/kernel/machine_kexec.c Suraj Jitindar Singh 2016-04-28 269 of_remove_property(node, of_find_property(node, kernel_end_prop.name, NULL));
2e8e4f5b80e101d arch/powerpc/kernel/machine_kexec.c Dale Farnsworth 2008-12-16 270
2e8e4f5b80e101d arch/powerpc/kernel/machine_kexec.c Dale Farnsworth 2008-12-16 271 /* information needed by userspace when using default_machine_kexec */
ea961a828fe7250 arch/powerpc/kernel/machine_kexec.c Anton Blanchard 2014-01-22 @272 kernel_end = cpu_to_be_ulong(__pa(_end));
:::::: The code at line 246 was first introduced by commit
:::::: ea961a828fe7250e954f086d74d9323c3d44c3e4 powerpc: Fix endian issues in kexec and crash dump code
:::::: TO: Anton Blanchard <anton(a)samba.org>
:::::: CC: Benjamin Herrenschmidt <benh(a)kernel.crashing.org>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 7 months
Re: [PATCH] iommu/qcom: add missing put_device() call in qcom_iommu_of_xlate()
by kernel test robot
Hi Yu,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on iommu/next]
[also build test WARNING on linus/master v5.9-rc6 next-20200921]
[cannot apply to robclark/msm-next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Yu-Kuai/iommu-qcom-add-missing-p...
base: https://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git next
config: arm64-randconfig-r023-20200920 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 4e8c028158b56d9c2142a62464e8e0686bde3584)
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
# install arm64 cross compiling tool for clang build
# apt-get install binutils-aarch64-linux-gnu
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>):
>> drivers/iommu/arm/arm-smmu/qcom_iommu.c:601:4: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation]
return -EINVAL;
^
drivers/iommu/arm/arm-smmu/qcom_iommu.c:599:3: note: previous statement is here
if (WARN_ON(qcom_iommu != dev_iommu_priv_get(dev)))
^
1 warning generated.
# https://github.com/0day-ci/linux/commit/2d982fb40897ad8088dd9dba06aee499f...
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Yu-Kuai/iommu-qcom-add-missing-put_device-call-in-qcom_iommu_of_xlate/20200918-091341
git checkout 2d982fb40897ad8088dd9dba06aee499f51c73ba
vim +/if +601 drivers/iommu/arm/arm-smmu/qcom_iommu.c
0ae349a0f33fb0 drivers/iommu/qcom_iommu.c Rob Clark 2017-08-09 562
0ae349a0f33fb0 drivers/iommu/qcom_iommu.c Rob Clark 2017-08-09 563 static int qcom_iommu_of_xlate(struct device *dev, struct of_phandle_args *args)
0ae349a0f33fb0 drivers/iommu/qcom_iommu.c Rob Clark 2017-08-09 564 {
0ae349a0f33fb0 drivers/iommu/qcom_iommu.c Rob Clark 2017-08-09 565 struct qcom_iommu_dev *qcom_iommu;
0ae349a0f33fb0 drivers/iommu/qcom_iommu.c Rob Clark 2017-08-09 566 struct platform_device *iommu_pdev;
0ae349a0f33fb0 drivers/iommu/qcom_iommu.c Rob Clark 2017-08-09 567 unsigned asid = args->args[0];
0ae349a0f33fb0 drivers/iommu/qcom_iommu.c Rob Clark 2017-08-09 568
0ae349a0f33fb0 drivers/iommu/qcom_iommu.c Rob Clark 2017-08-09 569 if (args->args_count != 1) {
0ae349a0f33fb0 drivers/iommu/qcom_iommu.c Rob Clark 2017-08-09 570 dev_err(dev, "incorrect number of iommu params found for %s "
0ae349a0f33fb0 drivers/iommu/qcom_iommu.c Rob Clark 2017-08-09 571 "(found %d, expected 1)\n",
0ae349a0f33fb0 drivers/iommu/qcom_iommu.c Rob Clark 2017-08-09 572 args->np->full_name, args->args_count);
0ae349a0f33fb0 drivers/iommu/qcom_iommu.c Rob Clark 2017-08-09 573 return -EINVAL;
0ae349a0f33fb0 drivers/iommu/qcom_iommu.c Rob Clark 2017-08-09 574 }
0ae349a0f33fb0 drivers/iommu/qcom_iommu.c Rob Clark 2017-08-09 575
0ae349a0f33fb0 drivers/iommu/qcom_iommu.c Rob Clark 2017-08-09 576 iommu_pdev = of_find_device_by_node(args->np);
0ae349a0f33fb0 drivers/iommu/qcom_iommu.c Rob Clark 2017-08-09 577 if (WARN_ON(!iommu_pdev))
0ae349a0f33fb0 drivers/iommu/qcom_iommu.c Rob Clark 2017-08-09 578 return -EINVAL;
0ae349a0f33fb0 drivers/iommu/qcom_iommu.c Rob Clark 2017-08-09 579
0ae349a0f33fb0 drivers/iommu/qcom_iommu.c Rob Clark 2017-08-09 580 qcom_iommu = platform_get_drvdata(iommu_pdev);
0ae349a0f33fb0 drivers/iommu/qcom_iommu.c Rob Clark 2017-08-09 581
0ae349a0f33fb0 drivers/iommu/qcom_iommu.c Rob Clark 2017-08-09 582 /* make sure the asid specified in dt is valid, so we don't have
0ae349a0f33fb0 drivers/iommu/qcom_iommu.c Rob Clark 2017-08-09 583 * to sanity check this elsewhere, since 'asid - 1' is used to
0ae349a0f33fb0 drivers/iommu/qcom_iommu.c Rob Clark 2017-08-09 584 * index into qcom_iommu->ctxs:
0ae349a0f33fb0 drivers/iommu/qcom_iommu.c Rob Clark 2017-08-09 585 */
0ae349a0f33fb0 drivers/iommu/qcom_iommu.c Rob Clark 2017-08-09 586 if (WARN_ON(asid < 1) ||
2d982fb40897ad drivers/iommu/arm/arm-smmu/qcom_iommu.c Yu Kuai 2020-09-18 587 WARN_ON(asid > qcom_iommu->num_ctxs)) {
2d982fb40897ad drivers/iommu/arm/arm-smmu/qcom_iommu.c Yu Kuai 2020-09-18 588 put_device(&iommu_pdev->dev);
0ae349a0f33fb0 drivers/iommu/qcom_iommu.c Rob Clark 2017-08-09 589 return -EINVAL;
2d982fb40897ad drivers/iommu/arm/arm-smmu/qcom_iommu.c Yu Kuai 2020-09-18 590 }
0ae349a0f33fb0 drivers/iommu/qcom_iommu.c Rob Clark 2017-08-09 591
09b5dfff9ad68f drivers/iommu/qcom_iommu.c Joerg Roedel 2020-03-26 592 if (!dev_iommu_priv_get(dev)) {
09b5dfff9ad68f drivers/iommu/qcom_iommu.c Joerg Roedel 2020-03-26 593 dev_iommu_priv_set(dev, qcom_iommu);
0ae349a0f33fb0 drivers/iommu/qcom_iommu.c Rob Clark 2017-08-09 594 } else {
0ae349a0f33fb0 drivers/iommu/qcom_iommu.c Rob Clark 2017-08-09 595 /* make sure devices iommus dt node isn't referring to
0ae349a0f33fb0 drivers/iommu/qcom_iommu.c Rob Clark 2017-08-09 596 * multiple different iommu devices. Multiple context
0ae349a0f33fb0 drivers/iommu/qcom_iommu.c Rob Clark 2017-08-09 597 * banks are ok, but multiple devices are not:
0ae349a0f33fb0 drivers/iommu/qcom_iommu.c Rob Clark 2017-08-09 598 */
09b5dfff9ad68f drivers/iommu/qcom_iommu.c Joerg Roedel 2020-03-26 599 if (WARN_ON(qcom_iommu != dev_iommu_priv_get(dev)))
2d982fb40897ad drivers/iommu/arm/arm-smmu/qcom_iommu.c Yu Kuai 2020-09-18 600 put_device(&iommu_pdev->dev);
0ae349a0f33fb0 drivers/iommu/qcom_iommu.c Rob Clark 2017-08-09 @601 return -EINVAL;
0ae349a0f33fb0 drivers/iommu/qcom_iommu.c Rob Clark 2017-08-09 602 }
0ae349a0f33fb0 drivers/iommu/qcom_iommu.c Rob Clark 2017-08-09 603
0ae349a0f33fb0 drivers/iommu/qcom_iommu.c Rob Clark 2017-08-09 604 return iommu_fwspec_add_ids(dev, &asid, 1);
0ae349a0f33fb0 drivers/iommu/qcom_iommu.c Rob Clark 2017-08-09 605 }
0ae349a0f33fb0 drivers/iommu/qcom_iommu.c Rob Clark 2017-08-09 606
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 7 months
Re: [PATCH 22/22] mpool: add Kconfig and Makefile
by kernel test robot
Hi,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on linux/master]
[also build test ERROR on linus/master v5.9-rc7 next-20200928]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/nmeeramohide-micron-com/add-Obje...
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git bcf876870b95592b52519ed4aafcf9d95999bc9c
config: m68k-allmodconfig (attached as .config)
compiler: m68k-linux-gcc (GCC) 9.3.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/0day-ci/linux/commit/0d485fc58582bd112bb72fe15f107e8cb...
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review nmeeramohide-micron-com/add-Object-Storage-Media-Pool-mpool/20200929-004933
git checkout 0d485fc58582bd112bb72fe15f107e8cbe3536b0
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=m68k
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All error/warnings (new ones prefixed by >>):
In file included from arch/m68k/include/asm/io_mm.h:25,
from arch/m68k/include/asm/io.h:8,
from include/linux/io.h:13,
from include/linux/irq.h:20,
from include/asm-generic/hardirq.h:13,
from ./arch/m68k/include/generated/asm/hardirq.h:1,
from include/linux/hardirq.h:10,
from include/linux/highmem.h:10,
from include/linux/pagemap.h:11,
from include/linux/blkdev.h:16,
from drivers/mpool/pd.c:15:
arch/m68k/include/asm/raw_io.h: In function 'raw_rom_outsb':
arch/m68k/include/asm/raw_io.h:83:7: warning: variable '__w' set but not used [-Wunused-but-set-variable]
83 | ({u8 __w, __v = (b); u32 _addr = ((u32) (addr)); \
| ^~~
arch/m68k/include/asm/raw_io.h:430:3: note: in expansion of macro 'rom_out_8'
430 | rom_out_8(port, *buf++);
| ^~~~~~~~~
arch/m68k/include/asm/raw_io.h: In function 'raw_rom_outsw':
arch/m68k/include/asm/raw_io.h:86:8: warning: variable '__w' set but not used [-Wunused-but-set-variable]
86 | ({u16 __w, __v = (w); u32 _addr = ((u32) (addr)); \
| ^~~
arch/m68k/include/asm/raw_io.h:448:3: note: in expansion of macro 'rom_out_be16'
448 | rom_out_be16(port, *buf++);
| ^~~~~~~~~~~~
arch/m68k/include/asm/raw_io.h: In function 'raw_rom_outsw_swapw':
arch/m68k/include/asm/raw_io.h:90:8: warning: variable '__w' set but not used [-Wunused-but-set-variable]
90 | ({u16 __w, __v = (w); u32 _addr = ((u32) (addr)); \
| ^~~
arch/m68k/include/asm/raw_io.h:466:3: note: in expansion of macro 'rom_out_le16'
466 | rom_out_le16(port, *buf++);
| ^~~~~~~~~~~~
In file included from include/linux/kernel.h:11,
from include/linux/list.h:9,
from include/linux/wait.h:7,
from include/linux/wait_bit.h:8,
from include/linux/fs.h:6,
from drivers/mpool/pd.c:14:
include/linux/scatterlist.h: In function 'sg_set_buf':
arch/m68k/include/asm/page_mm.h:169:49: warning: ordered comparison of pointer with null pointer [-Wextra]
169 | #define virt_addr_valid(kaddr) ((void *)(kaddr) >= (void *)PAGE_OFFSET && (void *)(kaddr) < high_memory)
| ^~
include/linux/compiler.h:78:42: note: in definition of macro 'unlikely'
78 | # define unlikely(x) __builtin_expect(!!(x), 0)
| ^
include/linux/scatterlist.h:143:2: note: in expansion of macro 'BUG_ON'
143 | BUG_ON(!virt_addr_valid(buf));
| ^~~~~~
include/linux/scatterlist.h:143:10: note: in expansion of macro 'virt_addr_valid'
143 | BUG_ON(!virt_addr_valid(buf));
| ^~~~~~~~~~~~~~~
drivers/mpool/pd.c: In function 'pd_bio_rw':
>> drivers/mpool/pd.c:294:14: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
294 | iov_base = (u64)iov[i].iov_base;
| ^
>> drivers/mpool/pd.c:224:13: warning: variable 'op' set but not used [-Wunused-but-set-variable]
224 | int i, cc, op;
| ^~
--
>> drivers/mpool/omf.c:27: warning: "STR" redefined
27 | #define STR(x) _STR(x)
|
In file included from arch/m68k/include/asm/irqflags.h:8,
from include/linux/irqflags.h:16,
from include/linux/spinlock.h:54,
from include/linux/mmzone.h:8,
from include/linux/gfp.h:6,
from include/linux/slab.h:15,
from drivers/mpool/omf.c:16:
arch/m68k/include/asm/entry.h:244: note: this is the location of the previous definition
244 | #define STR(X) STR1(X)
|
drivers/mpool/omf.c:28:19: warning: 'mpool_sbver' defined but not used [-Wunused-const-variable=]
28 | static const char mpool_sbver[] = "MPOOL_SBVER_" STR(OMF_SB_DESC_VER_LAST);
| ^~~~~~~~~~~
--
In file included from include/linux/printk.h:7,
from include/linux/kernel.h:15,
from include/asm-generic/bug.h:19,
from arch/m68k/include/asm/bug.h:32,
from include/linux/bug.h:5,
from include/linux/mmdebug.h:5,
from include/linux/gfp.h:5,
from include/linux/slab.h:15,
from drivers/mpool/mdc.c:6:
drivers/mpool/mdc.c: In function 'mp_mdc_read':
include/linux/kern_levels.h:5:18: warning: format '%lu' expects argument of type 'long unsigned int', but argument 6 has type 'size_t' {aka 'unsigned int'} [-Wformat=]
5 | #define KERN_SOH "\001" /* ASCII Start Of Header */
| ^~~~~~
include/linux/kern_levels.h:11:18: note: in expansion of macro 'KERN_SOH'
11 | #define KERN_ERR KERN_SOH "3" /* error conditions */
| ^~~~~~~~
include/linux/printk.h:338:9: note: in expansion of macro 'KERN_ERR'
338 | printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~~
drivers/mpool/mpool_printk.h:17:2: note: in expansion of macro 'pr_err'
17 | pr_err("%s: " _fmt ": errno %d", __func__, ## __VA_ARGS__, (_err))
| ^~~~~~
drivers/mpool/mdc.c:458:3: note: in expansion of macro 'mp_pr_err'
458 | mp_pr_err("mpool %s, mdc %p read failed, mlog %p len %lu",
| ^~~~~~~~~
drivers/mpool/mdc.c:458:58: note: format string is defined here
458 | mp_pr_err("mpool %s, mdc %p read failed, mlog %p len %lu",
| ~~^
| |
| long unsigned int
| %u
In file included from include/linux/printk.h:7,
from include/linux/kernel.h:15,
from include/asm-generic/bug.h:19,
from arch/m68k/include/asm/bug.h:32,
from include/linux/bug.h:5,
from include/linux/mmdebug.h:5,
from include/linux/gfp.h:5,
from include/linux/slab.h:15,
from drivers/mpool/mdc.c:6:
drivers/mpool/mdc.c: In function 'mp_mdc_append':
>> include/linux/kern_levels.h:5:18: warning: format '%lu' expects argument of type 'long unsigned int', but argument 6 has type 'ssize_t' {aka 'int'} [-Wformat=]
5 | #define KERN_SOH "\001" /* ASCII Start Of Header */
| ^~~~~~
include/linux/kern_levels.h:11:18: note: in expansion of macro 'KERN_SOH'
11 | #define KERN_ERR KERN_SOH "3" /* error conditions */
| ^~~~~~~~
include/linux/printk.h:338:9: note: in expansion of macro 'KERN_ERR'
338 | printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~~
drivers/mpool/mpool_printk.h:39:3: note: in expansion of macro 'pr_err'
39 | pr_err("%s: " _fmt ": errno %d", \
| ^~~~~~
drivers/mpool/mdc.c:480:3: note: in expansion of macro 'mp_pr_rl'
480 | mp_pr_rl("mpool %s, mdc %p append failed, mlog %p, len %lu sync %d",
| ^~~~~~~~
drivers/mpool/mdc.c:480:60: note: format string is defined here
480 | mp_pr_rl("mpool %s, mdc %p append failed, mlog %p, len %lu sync %d",
| ~~^
| |
| long unsigned int
| %u
--
In file included from arch/m68k/include/asm/io_mm.h:25,
from arch/m68k/include/asm/io.h:8,
from include/linux/io.h:13,
from include/linux/irq.h:20,
from include/asm-generic/hardirq.h:13,
from ./arch/m68k/include/generated/asm/hardirq.h:1,
from include/linux/hardirq.h:10,
from include/linux/highmem.h:10,
from include/linux/pagemap.h:11,
from include/linux/blkdev.h:16,
from drivers/mpool/mpctl.c:14:
arch/m68k/include/asm/raw_io.h: In function 'raw_rom_outsb':
arch/m68k/include/asm/raw_io.h:83:7: warning: variable '__w' set but not used [-Wunused-but-set-variable]
83 | ({u8 __w, __v = (b); u32 _addr = ((u32) (addr)); \
| ^~~
arch/m68k/include/asm/raw_io.h:430:3: note: in expansion of macro 'rom_out_8'
430 | rom_out_8(port, *buf++);
| ^~~~~~~~~
arch/m68k/include/asm/raw_io.h: In function 'raw_rom_outsw':
arch/m68k/include/asm/raw_io.h:86:8: warning: variable '__w' set but not used [-Wunused-but-set-variable]
86 | ({u16 __w, __v = (w); u32 _addr = ((u32) (addr)); \
| ^~~
arch/m68k/include/asm/raw_io.h:448:3: note: in expansion of macro 'rom_out_be16'
448 | rom_out_be16(port, *buf++);
| ^~~~~~~~~~~~
arch/m68k/include/asm/raw_io.h: In function 'raw_rom_outsw_swapw':
arch/m68k/include/asm/raw_io.h:90:8: warning: variable '__w' set but not used [-Wunused-but-set-variable]
90 | ({u16 __w, __v = (w); u32 _addr = ((u32) (addr)); \
| ^~~
arch/m68k/include/asm/raw_io.h:466:3: note: in expansion of macro 'rom_out_le16'
466 | rom_out_le16(port, *buf++);
| ^~~~~~~~~~~~
In file included from include/linux/kernel.h:11,
from drivers/mpool/mpctl.c:6:
include/linux/scatterlist.h: In function 'sg_set_buf':
arch/m68k/include/asm/page_mm.h:169:49: warning: ordered comparison of pointer with null pointer [-Wextra]
169 | #define virt_addr_valid(kaddr) ((void *)(kaddr) >= (void *)PAGE_OFFSET && (void *)(kaddr) < high_memory)
| ^~
include/linux/compiler.h:78:42: note: in definition of macro 'unlikely'
78 | # define unlikely(x) __builtin_expect(!!(x), 0)
| ^
include/linux/scatterlist.h:143:2: note: in expansion of macro 'BUG_ON'
143 | BUG_ON(!virt_addr_valid(buf));
| ^~~~~~
include/linux/scatterlist.h:143:10: note: in expansion of macro 'virt_addr_valid'
143 | BUG_ON(!virt_addr_valid(buf));
| ^~~~~~~~~~~~~~~
drivers/mpool/mpctl.c: In function 'mpc_open':
>> drivers/mpool/mpctl.c:2393:23: warning: left shift count >= width of type [-Wshift-count-overflow]
2393 | i_size_write(ip, 1ul << 63);
| ^~
--
In file included from arch/m68k/include/asm/io_mm.h:25,
from arch/m68k/include/asm/io.h:8,
from include/linux/io.h:13,
from include/linux/irq.h:20,
from include/asm-generic/hardirq.h:13,
from ./arch/m68k/include/generated/asm/hardirq.h:1,
from include/linux/hardirq.h:10,
from include/linux/interrupt.h:11,
from include/linux/kernel_stat.h:9,
from include/linux/cgroup.h:26,
from include/linux/memcontrol.h:13,
from drivers/mpool/mcache.c:7:
arch/m68k/include/asm/raw_io.h: In function 'raw_rom_outsb':
arch/m68k/include/asm/raw_io.h:83:7: warning: variable '__w' set but not used [-Wunused-but-set-variable]
83 | ({u8 __w, __v = (b); u32 _addr = ((u32) (addr)); \
| ^~~
arch/m68k/include/asm/raw_io.h:430:3: note: in expansion of macro 'rom_out_8'
430 | rom_out_8(port, *buf++);
| ^~~~~~~~~
arch/m68k/include/asm/raw_io.h: In function 'raw_rom_outsw':
arch/m68k/include/asm/raw_io.h:86:8: warning: variable '__w' set but not used [-Wunused-but-set-variable]
86 | ({u16 __w, __v = (w); u32 _addr = ((u32) (addr)); \
| ^~~
arch/m68k/include/asm/raw_io.h:448:3: note: in expansion of macro 'rom_out_be16'
448 | rom_out_be16(port, *buf++);
| ^~~~~~~~~~~~
arch/m68k/include/asm/raw_io.h: In function 'raw_rom_outsw_swapw':
arch/m68k/include/asm/raw_io.h:90:8: warning: variable '__w' set but not used [-Wunused-but-set-variable]
90 | ({u16 __w, __v = (w); u32 _addr = ((u32) (addr)); \
| ^~~
arch/m68k/include/asm/raw_io.h:466:3: note: in expansion of macro 'rom_out_le16'
466 | rom_out_le16(port, *buf++);
| ^~~~~~~~~~~~
In file included from include/linux/kernel.h:11,
from include/linux/list.h:9,
from include/linux/module.h:12,
from drivers/mpool/mcache.c:6:
include/linux/scatterlist.h: In function 'sg_set_buf':
arch/m68k/include/asm/page_mm.h:169:49: warning: ordered comparison of pointer with null pointer [-Wextra]
169 | #define virt_addr_valid(kaddr) ((void *)(kaddr) >= (void *)PAGE_OFFSET && (void *)(kaddr) < high_memory)
| ^~
include/linux/compiler.h:78:42: note: in definition of macro 'unlikely'
78 | # define unlikely(x) __builtin_expect(!!(x), 0)
| ^
include/linux/scatterlist.h:143:2: note: in expansion of macro 'BUG_ON'
143 | BUG_ON(!virt_addr_valid(buf));
| ^~~~~~
include/linux/scatterlist.h:143:10: note: in expansion of macro 'virt_addr_valid'
143 | BUG_ON(!virt_addr_valid(buf));
| ^~~~~~~~~~~~~~~
drivers/mpool/mcache.c: In function 'mpc_readpages':
>> drivers/mpool/mcache.c:581:3: error: implicit declaration of function 'prefetchw' [-Werror=implicit-function-declaration]
581 | prefetchw(&page->flags);
| ^~~~~~~~~
cc1: some warnings being treated as errors
--
drivers/mpool/reaper.c: In function 'mpc_reap_xvm_add':
>> drivers/mpool/reaper.c:577:12: warning: variable 'mult' set but not used [-Wunused-but-set-variable]
577 | uint idx, mult;
| ^~~~
vim +/prefetchw +581 drivers/mpool/mcache.c
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 499
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 500 static int mpc_readpages(struct file *file, struct address_space *mapping,
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 501 struct list_head *pages, uint nr_pages)
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 502 {
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 503 struct workqueue_struct *wq;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 504 struct readpage_work *w;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 505 struct work_struct *work;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 506 struct mpc_mbinfo *mbinfo;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 507 struct mpc_unit *unit;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 508 struct mpc_xvm *xvm;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 509 struct page *page;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 510 off_t offset, mbend;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 511 uint mbnum, iovmax, i;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 512 uint ra_pages_max;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 513 ulong index;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 514 gfp_t gfp;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 515 u32 key;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 516 int rc;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 517
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 518 unit = file->private_data;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 519
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 520 ra_pages_max = unit->un_ra_pages_max;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 521 if (ra_pages_max < 1)
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 522 return 0;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 523
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 524 page = lru_to_page(pages);
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 525 offset = page->index << PAGE_SHIFT;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 526 index = page->index;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 527 work = NULL;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 528 w = NULL;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 529
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 530 key = offset >> xvm_size_max;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 531
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 532 /*
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 533 * The idr value here (xvm) is pinned for the lifetime of the address map.
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 534 * Therefore, we can exit the rcu read-side critsec without worry that xvm will be
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 535 * destroyed before put_page() has been called on each and every page in the given
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 536 * list of pages.
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 537 */
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 538 rcu_read_lock();
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 539 xvm = idr_find(&unit->un_rgnmap.rm_root, key);
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 540 rcu_read_unlock();
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 541
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 542 if (!xvm)
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 543 return 0;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 544
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 545 offset %= (1ul << xvm_size_max);
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 546
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 547 mbnum = offset / xvm->xvm_bktsz;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 548 if (mbnum >= xvm->xvm_mbinfoc)
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 549 return 0;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 550
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 551 mbinfo = xvm->xvm_mbinfov + mbnum;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 552
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 553 mbend = mbnum * xvm->xvm_bktsz + mbinfo->mblen;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 554 iovmax = MPC_RA_IOV_MAX;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 555
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 556 gfp = mapping_gfp_mask(mapping) & GFP_KERNEL;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 557 wq = mpc_rgn2wq(xvm->xvm_rgn);
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 558
f5867898fb79966 Nabeel M Mohamed 2020-09-28 559 if (mpc_reap_xvm_duress(xvm))
f5867898fb79966 Nabeel M Mohamed 2020-09-28 560 nr_pages = min_t(uint, nr_pages, 8);
f5867898fb79966 Nabeel M Mohamed 2020-09-28 561
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 562 nr_pages = min_t(uint, nr_pages, ra_pages_max);
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 563
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 564 for (i = 0; i < nr_pages; ++i) {
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 565 page = lru_to_page(pages);
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 566 offset = page->index << PAGE_SHIFT;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 567 offset %= (1ul << xvm_size_max);
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 568
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 569 /* Don't read past the end of the mblock. */
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 570 if (offset >= mbend)
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 571 break;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 572
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 573 /* mblock reads must be logically contiguous. */
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 574 if (page->index != index && work) {
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 575 queue_work(wq, work);
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 576 work = NULL;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 577 }
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 578
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 579 index = page->index + 1; /* next expected page index */
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 580
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 @581 prefetchw(&page->flags);
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 582 list_del(&page->lru);
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 583
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 584 rc = add_to_page_cache_lru(page, mapping, page->index, gfp);
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 585 if (rc) {
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 586 if (work) {
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 587 queue_work(wq, work);
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 588 work = NULL;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 589 }
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 590 put_page(page);
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 591 continue;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 592 }
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 593
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 594 if (!work) {
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 595 w = page_address(page);
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 596 INIT_WORK(&w->w_work, mpc_readpages_cb);
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 597 w->w_args.a_xvm = xvm;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 598 w->w_args.a_mbdesc = mbinfo->mbdesc;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 599 w->w_args.a_mboffset = offset % xvm->xvm_bktsz;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 600 w->w_args.a_pagec = 0;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 601 work = &w->w_work;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 602
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 603 iovmax = MPC_RA_IOV_MAX;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 604 iovmax -= page->index % MPC_RA_IOV_MAX;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 605 }
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 606
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 607 w->w_args.a_pagev[w->w_args.a_pagec++] = page;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 608
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 609 /*
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 610 * Restrict batch size to the number of struct kvecs
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 611 * that will fit into a page (minus our header).
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 612 */
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 613 if (w->w_args.a_pagec >= iovmax) {
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 614 queue_work(wq, work);
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 615 work = NULL;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 616 }
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 617 }
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 618
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 619 if (work)
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 620 queue_work(wq, work);
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 621
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 622 return 0;
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 623 }
3114e86da188ef1 Nabeel M Mohamed 2020-09-28 624
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 7 months
[dborkman:pr/bpf-tc-misc4 2/6] include/linux/cookie.h:9:2: error: unknown type name 'local_t'
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/dborkman/bpf.git pr/bpf-tc-misc4
head: 188304118952013ec8a3530d49af3a8761347fd4
commit: c5d8df214d0bd51af6b0359dd396e80e7df3e561 [2/6] bpf, net: rework cookie generator as per-cpu one
config: nds32-randconfig-p001-20200928 (attached as .config)
compiler: nds32le-linux-gcc (GCC) 9.3.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://git.kernel.org/pub/scm/linux/kernel/git/dborkman/bpf.git/commit/?...
git remote add dborkman https://git.kernel.org/pub/scm/linux/kernel/git/dborkman/bpf.git
git fetch --no-tags dborkman pr/bpf-tc-misc4
git checkout c5d8df214d0bd51af6b0359dd396e80e7df3e561
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=nds32
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
In file included from net/core/net_namespace.c:22:
>> include/linux/cookie.h:9:2: error: unknown type name 'local_t'
9 | local_t nesting;
| ^~~~~~~
In file included from include/linux/kernel.h:11,
from include/linux/list.h:9,
from include/linux/timer.h:5,
from include/linux/workqueue.h:9,
from net/core/net_namespace.c:4:
include/linux/cookie.h: In function 'gen_cookie_next':
>> include/linux/cookie.h:34:13: error: implicit declaration of function 'local_inc_return'; did you mean 'atomic_inc_return'? [-Werror=implicit-function-declaration]
34 | if (likely(local_inc_return(&local->nesting) == 1)) {
| ^~~~~~~~~~~~~~~~
include/linux/compiler.h:77:40: note: in definition of macro 'likely'
77 | # define likely(x) __builtin_expect(!!(x), 1)
| ^
In file included from net/core/net_namespace.c:22:
>> include/linux/cookie.h:46:2: error: implicit declaration of function 'local_dec'; did you mean 'local_lock'? [-Werror=implicit-function-declaration]
46 | local_dec(&local->nesting);
| ^~~~~~~~~
| local_lock
cc1: some warnings being treated as errors
vim +/local_t +9 include/linux/cookie.h
7
8 struct pcpu_gen_cookie {
> 9 local_t nesting;
10 u64 last;
11 } __aligned(16);
12
13 struct gen_cookie {
14 struct pcpu_gen_cookie __percpu *local;
15 atomic64_t forward_last ____cacheline_aligned_in_smp;
16 atomic64_t reverse_last;
17 };
18
19 #define COOKIE_LOCAL_BATCH 4096
20
21 #define DEFINE_COOKIE(name) \
22 static DEFINE_PER_CPU(struct pcpu_gen_cookie, __##name); \
23 static struct gen_cookie name = { \
24 .local = &__##name, \
25 .forward_last = ATOMIC64_INIT(0), \
26 .reverse_last = ATOMIC64_INIT(0), \
27 }
28
29 static __always_inline u64 gen_cookie_next(struct gen_cookie *gc)
30 {
31 struct pcpu_gen_cookie *local = this_cpu_ptr(gc->local);
32 u64 val;
33
> 34 if (likely(local_inc_return(&local->nesting) == 1)) {
35 val = local->last;
36 if (__is_defined(CONFIG_SMP) &&
37 unlikely((val & (COOKIE_LOCAL_BATCH - 1)) == 0)) {
38 s64 next = atomic64_add_return(COOKIE_LOCAL_BATCH,
39 &gc->forward_last);
40 val = next - COOKIE_LOCAL_BATCH;
41 }
42 local->last = ++val;
43 } else {
44 val = atomic64_dec_return(&gc->reverse_last);
45 }
> 46 local_dec(&local->nesting);
47 return val;
48 }
49
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 7 months
[linux-next:master 10500/11653] drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1214:47: sparse: sparse: incorrect type in assignment (different address spaces)
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: 663b07a45f972c23ac315fd690874bc00977fe99
commit: 4184da4f316a549ae732d91088571fef46a2f58d [10500/11653] staging: vchiq: fix __user annotations
config: sparc-randconfig-s031-20200928 (attached as .config)
compiler: sparc64-linux-gcc (GCC) 9.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.2-201-g24bdaac6-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commi...
git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
git fetch --no-tags linux-next master
git checkout 4184da4f316a549ae732d91088571fef46a2f58d
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=sparc
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1000:56: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void *offset @@ got void [noderef] __user *data @@
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1000:56: sparse: expected void *offset
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1000:56: sparse: got void [noderef] __user *data
>> drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1214:47: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void [noderef] __user *[addressable] [assigned] bulk_userdata @@ got void *bulk_userdata @@
>> drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1214:47: sparse: expected void [noderef] __user *[addressable] [assigned] bulk_userdata
>> drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c:1214:47: sparse: got void *bulk_userdata
vim +1214 drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
1091
1092 static int vchiq_ioc_await_completion(struct vchiq_instance *instance,
1093 struct vchiq_await_completion *args,
1094 int __user *msgbufcountp)
1095 {
1096 int msgbufcount;
1097 int remove;
1098 int ret;
1099
1100 DEBUG_INITIALISE(g_state.local)
1101
1102 DEBUG_TRACE(AWAIT_COMPLETION_LINE);
1103 if (!instance->connected) {
1104 return -ENOTCONN;
1105 }
1106
1107 mutex_lock(&instance->completion_mutex);
1108
1109 DEBUG_TRACE(AWAIT_COMPLETION_LINE);
1110 while ((instance->completion_remove ==
1111 instance->completion_insert)
1112 && !instance->closing) {
1113 int rc;
1114
1115 DEBUG_TRACE(AWAIT_COMPLETION_LINE);
1116 mutex_unlock(&instance->completion_mutex);
1117 rc = wait_for_completion_interruptible(
1118 &instance->insert_event);
1119 mutex_lock(&instance->completion_mutex);
1120 if (rc) {
1121 DEBUG_TRACE(AWAIT_COMPLETION_LINE);
1122 vchiq_log_info(vchiq_arm_log_level,
1123 "AWAIT_COMPLETION interrupted");
1124 ret = -EINTR;
1125 goto out;
1126 }
1127 }
1128 DEBUG_TRACE(AWAIT_COMPLETION_LINE);
1129
1130 msgbufcount = args->msgbufcount;
1131 remove = instance->completion_remove;
1132
1133 for (ret = 0; ret < args->count; ret++) {
1134 struct vchiq_completion_data_kernel *completion;
1135 struct vchiq_completion_data user_completion;
1136 struct vchiq_service *service;
1137 struct user_service *user_service;
1138 struct vchiq_header *header;
1139
1140 if (remove == instance->completion_insert)
1141 break;
1142
1143 completion = &instance->completions[
1144 remove & (MAX_COMPLETIONS - 1)];
1145
1146 /*
1147 * A read memory barrier is needed to stop
1148 * prefetch of a stale completion record
1149 */
1150 rmb();
1151
1152 service = completion->service_userdata;
1153 user_service = service->base.userdata;
1154
1155 memset(&user_completion, 0, sizeof(user_completion));
1156 user_completion = (struct vchiq_completion_data) {
1157 .reason = completion->reason,
1158 .service_userdata = user_service->userdata,
1159 };
1160
1161 header = completion->header;
1162 if (header) {
1163 void __user *msgbuf;
1164 int msglen;
1165
1166 msglen = header->size + sizeof(struct vchiq_header);
1167 /* This must be a VCHIQ-style service */
1168 if (args->msgbufsize < msglen) {
1169 vchiq_log_error(vchiq_arm_log_level,
1170 "header %pK: msgbufsize %x < msglen %x",
1171 header, args->msgbufsize, msglen);
1172 WARN(1, "invalid message size\n");
1173 if (ret == 0)
1174 ret = -EMSGSIZE;
1175 break;
1176 }
1177 if (msgbufcount <= 0)
1178 /* Stall here for lack of a
1179 ** buffer for the message. */
1180 break;
1181 /* Get the pointer from user space */
1182 msgbufcount--;
1183 if (vchiq_get_user_ptr(&msgbuf, args->msgbufs,
1184 msgbufcount)) {
1185 if (ret == 0)
1186 ret = -EFAULT;
1187 break;
1188 }
1189
1190 /* Copy the message to user space */
1191 if (copy_to_user(msgbuf, header, msglen)) {
1192 if (ret == 0)
1193 ret = -EFAULT;
1194 break;
1195 }
1196
1197 /* Now it has been copied, the message
1198 ** can be released. */
1199 vchiq_release_message(service->handle, header);
1200
1201 /* The completion must point to the
1202 ** msgbuf. */
1203 user_completion.header = msgbuf;
1204 }
1205
1206 if ((completion->reason == VCHIQ_SERVICE_CLOSED) &&
1207 !instance->use_close_delivered)
1208 unlock_service(service);
1209
1210 /*
1211 * FIXME: address space mismatch, does bulk_userdata
1212 * actually point to user or kernel memory?
1213 */
> 1214 user_completion.bulk_userdata = completion->bulk_userdata;
1215
1216 if (vchiq_put_completion(args->buf, &user_completion, ret)) {
1217 if (ret == 0)
1218 ret = -EFAULT;
1219 break;
1220 }
1221
1222 /*
1223 * Ensure that the above copy has completed
1224 * before advancing the remove pointer.
1225 */
1226 mb();
1227 remove++;
1228 instance->completion_remove = remove;
1229 }
1230
1231 if (msgbufcount != args->msgbufcount) {
1232 if (put_user(msgbufcount, msgbufcountp))
1233 ret = -EFAULT;
1234 }
1235 out:
1236 if (ret)
1237 complete(&instance->remove_event);
1238 mutex_unlock(&instance->completion_mutex);
1239 DEBUG_TRACE(AWAIT_COMPLETION_LINE);
1240
1241 return ret;
1242 }
1243
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 7 months
[arc:for-curr 1/3] arch/arc/Kconfig:100: can't open file "arch/arc/plat-eznps/Kconfig"
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc.git for-curr
head: b18b6a1d2b82eb8a2e415e4b1fb1be9027353a5d
commit: 2a8b4c7db0ccea1422545dfe3409a56c356dac58 [1/3] ARC: [plat-eznps]: Drop support for EZChip NPS platform
config: arc-allyesconfig
compiler: arceb-elf-gcc (GCC) 9.3.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://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc.git/commit/?id...
git remote add arc https://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc.git
git fetch --no-tags arc for-curr
git checkout 2a8b4c7db0ccea1422545dfe3409a56c356dac58
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arc allyesconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arc
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
>> arch/arc/Kconfig:100: can't open file "arch/arc/plat-eznps/Kconfig"
make[2]: *** [scripts/kconfig/Makefile:71: allyesconfig] Error 1
make[1]: *** [Makefile:606: allyesconfig] Error 2
make: *** [Makefile:185: __sub-make] Error 2
make: Target 'allyesconfig' not remade because of errors.
--
>> arch/arc/Kconfig:100: can't open file "arch/arc/plat-eznps/Kconfig"
make[2]: *** [scripts/kconfig/Makefile:71: oldconfig] Error 1
make[1]: *** [Makefile:606: oldconfig] Error 2
make: *** [Makefile:185: __sub-make] Error 2
make: Target 'oldconfig' not remade because of errors.
--
>> arch/arc/Kconfig:100: can't open file "arch/arc/plat-eznps/Kconfig"
make[2]: *** [scripts/kconfig/Makefile:71: olddefconfig] Error 1
make[1]: *** [Makefile:606: olddefconfig] Error 2
make: *** [Makefile:185: __sub-make] Error 2
make: Target 'olddefconfig' not remade because of errors.
vim +100 arch/arc/Kconfig
cfdbc2e16e65c1e Vineet Gupta 2013-01-18 96
072eb693904a52d Christian Ruppert 2013-04-12 97 source "arch/arc/plat-tb10x/Kconfig"
556cc1c5f528dcc Alexey Brodkin 2014-01-27 98 source "arch/arc/plat-axs10x/Kconfig"
cfdbc2e16e65c1e Vineet Gupta 2013-01-18 99 #New platform adds here
966657890e874d3 Noam Camus 2015-10-16 @100 source "arch/arc/plat-eznps/Kconfig"
a518d63777a4e94 Alexey Brodkin 2017-08-15 101 source "arch/arc/plat-hsdk/Kconfig"
93ad700de2abc11 Vineet Gupta 2013-01-22 102
:::::: The code at line 100 was first introduced by commit
:::::: 966657890e874d3b01d94b1ec156b7da54ba99b0 ARC: Add eznps platform to Kconfig and Makefile
:::::: TO: Noam Camus <noamc(a)ezchip.com>
:::::: CC: Vineet Gupta <vgupta(a)synopsys.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 7 months