* kernel/bpf/cgroup.c:455 __cgroup_bpf_attach() error: we previously assumed 'link' could be null (see line 430)
@ 2020-06-02 3:27 kbuild test robot
0 siblings, 0 replies; only message in thread
From: kbuild test robot @ 2020-06-02 3:27 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 9731 bytes --]
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: "Andrii, Nakryiko," <andriin@fb.com>
CC: Alexei Starovoitov <ast@kernel.org>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: f359287765c04711ff54fbd11645271d8e5ff763
commit: af6eea57437a830293eab56246b6025cc7d46ee7 bpf: Implement bpf_link-based cgroup BPF program attachment
date: 9 weeks ago
:::::: branch date: 4 hours ago
:::::: commit date: 9 weeks ago
config: i386-randconfig-m021-20200602 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-13) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
smatch warnings:
kernel/bpf/cgroup.c:455 __cgroup_bpf_attach() error: we previously assumed 'link' could be null (see line 430)
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=af6eea57437a830293eab56246b6025cc7d46ee7
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git remote update linus
git checkout af6eea57437a830293eab56246b6025cc7d46ee7
vim +/link +455 kernel/bpf/cgroup.c
af6eea57437a83 Andrii Nakryiko 2020-03-29 399
3007098494bec6 Daniel Mack 2016-11-23 400 /**
af6eea57437a83 Andrii Nakryiko 2020-03-29 401 * __cgroup_bpf_attach() - Attach the program or the link to a cgroup, and
3007098494bec6 Daniel Mack 2016-11-23 402 * propagate the change to descendants
3007098494bec6 Daniel Mack 2016-11-23 403 * @cgrp: The cgroup which descendants to traverse
324bda9e6c5add Alexei Starovoitov 2017-10-02 404 * @prog: A program to attach
af6eea57437a83 Andrii Nakryiko 2020-03-29 405 * @link: A link to attach
7dd68b3279f179 Andrey Ignatov 2019-12-18 406 * @replace_prog: Previously attached program to replace if BPF_F_REPLACE is set
324bda9e6c5add Alexei Starovoitov 2017-10-02 407 * @type: Type of attach operation
1832f4ef5867fd Valdis Kletnieks 2019-01-29 408 * @flags: Option flags
3007098494bec6 Daniel Mack 2016-11-23 409 *
af6eea57437a83 Andrii Nakryiko 2020-03-29 410 * Exactly one of @prog or @link can be non-null.
3007098494bec6 Daniel Mack 2016-11-23 411 * Must be called with cgroup_mutex held.
3007098494bec6 Daniel Mack 2016-11-23 412 */
af6eea57437a83 Andrii Nakryiko 2020-03-29 413 int __cgroup_bpf_attach(struct cgroup *cgrp,
af6eea57437a83 Andrii Nakryiko 2020-03-29 414 struct bpf_prog *prog, struct bpf_prog *replace_prog,
af6eea57437a83 Andrii Nakryiko 2020-03-29 415 struct bpf_cgroup_link *link,
324bda9e6c5add Alexei Starovoitov 2017-10-02 416 enum bpf_attach_type type, u32 flags)
3007098494bec6 Daniel Mack 2016-11-23 417 {
7dd68b3279f179 Andrey Ignatov 2019-12-18 418 u32 saved_flags = (flags & (BPF_F_ALLOW_OVERRIDE | BPF_F_ALLOW_MULTI));
324bda9e6c5add Alexei Starovoitov 2017-10-02 419 struct list_head *progs = &cgrp->bpf.progs[type];
324bda9e6c5add Alexei Starovoitov 2017-10-02 420 struct bpf_prog *old_prog = NULL;
8bad74f9840f87 Roman Gushchin 2018-09-28 421 struct bpf_cgroup_storage *storage[MAX_BPF_CGROUP_STORAGE_TYPE],
8bad74f9840f87 Roman Gushchin 2018-09-28 422 *old_storage[MAX_BPF_CGROUP_STORAGE_TYPE] = {NULL};
af6eea57437a83 Andrii Nakryiko 2020-03-29 423 struct bpf_prog_list *pl;
324bda9e6c5add Alexei Starovoitov 2017-10-02 424 int err;
324bda9e6c5add Alexei Starovoitov 2017-10-02 425
7dd68b3279f179 Andrey Ignatov 2019-12-18 426 if (((flags & BPF_F_ALLOW_OVERRIDE) && (flags & BPF_F_ALLOW_MULTI)) ||
7dd68b3279f179 Andrey Ignatov 2019-12-18 427 ((flags & BPF_F_REPLACE) && !(flags & BPF_F_ALLOW_MULTI)))
324bda9e6c5add Alexei Starovoitov 2017-10-02 428 /* invalid combination */
324bda9e6c5add Alexei Starovoitov 2017-10-02 429 return -EINVAL;
af6eea57437a83 Andrii Nakryiko 2020-03-29 @430 if (link && (prog || replace_prog))
af6eea57437a83 Andrii Nakryiko 2020-03-29 431 /* only either link or prog/replace_prog can be specified */
af6eea57437a83 Andrii Nakryiko 2020-03-29 432 return -EINVAL;
af6eea57437a83 Andrii Nakryiko 2020-03-29 433 if (!!replace_prog != !!(flags & BPF_F_REPLACE))
af6eea57437a83 Andrii Nakryiko 2020-03-29 434 /* replace_prog implies BPF_F_REPLACE, and vice versa */
af6eea57437a83 Andrii Nakryiko 2020-03-29 435 return -EINVAL;
324bda9e6c5add Alexei Starovoitov 2017-10-02 436
9fab329d6a04c0 Andrey Ignatov 2019-12-18 437 if (!hierarchy_allows_attach(cgrp, type))
7f677633379b4a Alexei Starovoitov 2017-02-10 438 return -EPERM;
7f677633379b4a Alexei Starovoitov 2017-02-10 439
7dd68b3279f179 Andrey Ignatov 2019-12-18 440 if (!list_empty(progs) && cgrp->bpf.flags[type] != saved_flags)
324bda9e6c5add Alexei Starovoitov 2017-10-02 441 /* Disallow attaching non-overridable on top
324bda9e6c5add Alexei Starovoitov 2017-10-02 442 * of existing overridable in this cgroup.
324bda9e6c5add Alexei Starovoitov 2017-10-02 443 * Disallow attaching multi-prog if overridable or none
7f677633379b4a Alexei Starovoitov 2017-02-10 444 */
7f677633379b4a Alexei Starovoitov 2017-02-10 445 return -EPERM;
7f677633379b4a Alexei Starovoitov 2017-02-10 446
324bda9e6c5add Alexei Starovoitov 2017-10-02 447 if (prog_list_length(progs) >= BPF_CGROUP_MAX_PROGS)
324bda9e6c5add Alexei Starovoitov 2017-10-02 448 return -E2BIG;
324bda9e6c5add Alexei Starovoitov 2017-10-02 449
af6eea57437a83 Andrii Nakryiko 2020-03-29 450 pl = find_attach_entry(progs, prog, link, replace_prog,
af6eea57437a83 Andrii Nakryiko 2020-03-29 451 flags & BPF_F_ALLOW_MULTI);
af6eea57437a83 Andrii Nakryiko 2020-03-29 452 if (IS_ERR(pl))
af6eea57437a83 Andrii Nakryiko 2020-03-29 453 return PTR_ERR(pl);
324bda9e6c5add Alexei Starovoitov 2017-10-02 454
af6eea57437a83 Andrii Nakryiko 2020-03-29 @455 if (bpf_cgroup_storages_alloc(storage, prog ? : link->link.prog))
324bda9e6c5add Alexei Starovoitov 2017-10-02 456 return -ENOMEM;
d7bf2c10af0531 Roman Gushchin 2018-08-02 457
af6eea57437a83 Andrii Nakryiko 2020-03-29 458 if (pl) {
1020c1f24a946e Andrey Ignatov 2019-12-18 459 old_prog = pl->prog;
00c4eddf7ee5cb Andrii Nakryiko 2020-03-24 460 bpf_cgroup_storages_unlink(pl->storage);
00c4eddf7ee5cb Andrii Nakryiko 2020-03-24 461 bpf_cgroup_storages_assign(old_storage, pl->storage);
324bda9e6c5add Alexei Starovoitov 2017-10-02 462 } else {
324bda9e6c5add Alexei Starovoitov 2017-10-02 463 pl = kmalloc(sizeof(*pl), GFP_KERNEL);
d7bf2c10af0531 Roman Gushchin 2018-08-02 464 if (!pl) {
00c4eddf7ee5cb Andrii Nakryiko 2020-03-24 465 bpf_cgroup_storages_free(storage);
324bda9e6c5add Alexei Starovoitov 2017-10-02 466 return -ENOMEM;
d7bf2c10af0531 Roman Gushchin 2018-08-02 467 }
324bda9e6c5add Alexei Starovoitov 2017-10-02 468 list_add_tail(&pl->node, progs);
324bda9e6c5add Alexei Starovoitov 2017-10-02 469 }
1020c1f24a946e Andrey Ignatov 2019-12-18 470
324bda9e6c5add Alexei Starovoitov 2017-10-02 471 pl->prog = prog;
af6eea57437a83 Andrii Nakryiko 2020-03-29 472 pl->link = link;
00c4eddf7ee5cb Andrii Nakryiko 2020-03-24 473 bpf_cgroup_storages_assign(pl->storage, storage);
7dd68b3279f179 Andrey Ignatov 2019-12-18 474 cgrp->bpf.flags[type] = saved_flags;
324bda9e6c5add Alexei Starovoitov 2017-10-02 475
85fc4b16aaf05f Roman Gushchin 2018-08-06 476 err = update_effective_progs(cgrp, type);
324bda9e6c5add Alexei Starovoitov 2017-10-02 477 if (err)
324bda9e6c5add Alexei Starovoitov 2017-10-02 478 goto cleanup;
324bda9e6c5add Alexei Starovoitov 2017-10-02 479
00c4eddf7ee5cb Andrii Nakryiko 2020-03-24 480 bpf_cgroup_storages_free(old_storage);
af6eea57437a83 Andrii Nakryiko 2020-03-29 481 if (old_prog)
324bda9e6c5add Alexei Starovoitov 2017-10-02 482 bpf_prog_put(old_prog);
af6eea57437a83 Andrii Nakryiko 2020-03-29 483 else
af6eea57437a83 Andrii Nakryiko 2020-03-29 484 static_branch_inc(&cgroup_bpf_enabled_key);
af6eea57437a83 Andrii Nakryiko 2020-03-29 485 bpf_cgroup_storages_link(pl->storage, cgrp, type);
324bda9e6c5add Alexei Starovoitov 2017-10-02 486 return 0;
324bda9e6c5add Alexei Starovoitov 2017-10-02 487
324bda9e6c5add Alexei Starovoitov 2017-10-02 488 cleanup:
af6eea57437a83 Andrii Nakryiko 2020-03-29 489 if (old_prog) {
324bda9e6c5add Alexei Starovoitov 2017-10-02 490 pl->prog = old_prog;
af6eea57437a83 Andrii Nakryiko 2020-03-29 491 pl->link = NULL;
af6eea57437a83 Andrii Nakryiko 2020-03-29 492 }
00c4eddf7ee5cb Andrii Nakryiko 2020-03-24 493 bpf_cgroup_storages_free(pl->storage);
00c4eddf7ee5cb Andrii Nakryiko 2020-03-24 494 bpf_cgroup_storages_assign(pl->storage, old_storage);
00c4eddf7ee5cb Andrii Nakryiko 2020-03-24 495 bpf_cgroup_storages_link(pl->storage, cgrp, type);
af6eea57437a83 Andrii Nakryiko 2020-03-29 496 if (!old_prog) {
324bda9e6c5add Alexei Starovoitov 2017-10-02 497 list_del(&pl->node);
324bda9e6c5add Alexei Starovoitov 2017-10-02 498 kfree(pl);
324bda9e6c5add Alexei Starovoitov 2017-10-02 499 }
324bda9e6c5add Alexei Starovoitov 2017-10-02 500 return err;
324bda9e6c5add Alexei Starovoitov 2017-10-02 501 }
324bda9e6c5add Alexei Starovoitov 2017-10-02 502
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 27889 bytes --]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2020-06-02 3:27 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-02 3:27 kernel/bpf/cgroup.c:455 __cgroup_bpf_attach() error: we previously assumed 'link' could be null (see line 430) kbuild test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.