From: kernel test robot <lkp@intel.com>
To: Kumar Kartikeya Dwivedi <memxor@gmail.com>, bpf@vger.kernel.org
Cc: kbuild-all@lists.01.org,
"Kumar Kartikeya Dwivedi" <memxor@gmail.com>,
"Toke Høiland-Jørgensen" <toke@redhat.com>,
"Alexei Starovoitov" <ast@kernel.org>,
"Daniel Borkmann" <daniel@iogearbox.net>,
"Andrii Nakryiko" <andrii@kernel.org>,
"Jamal Hadi Salim" <jhs@mojatatu.com>,
"Vlad Buslov" <vladbu@nvidia.com>,
"Cong Wang" <xiyou.wangcong@gmail.com>,
"Jesper Dangaard Brouer" <brouer@redhat.com>
Subject: Re: [PATCH bpf-next v2 3/7] net: sched: add bpf_link API for bpf classifier
Date: Fri, 4 Jun 2021 19:32:30 +0800 [thread overview]
Message-ID: <202106041949.dHY7EvgX-lkp@intel.com> (raw)
In-Reply-To: <20210604063116.234316-4-memxor@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 7810 bytes --]
Hi Kumar,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on bpf-next/master]
url: https://github.com/0day-ci/linux/commits/Kumar-Kartikeya-Dwivedi/Add-bpf_link-based-TC-BPF-API/20210604-143611
base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master
config: i386-randconfig-s001-20210603 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.3-341-g8af24329-dirty
# https://github.com/0day-ci/linux/commit/a8da2c7297ab4c27511723367a5679b51bd5af7c
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Kumar-Kartikeya-Dwivedi/Add-bpf_link-based-TC-BPF-API/20210604-143611
git checkout a8da2c7297ab4c27511723367a5679b51bd5af7c
# save the attached .config to linux build tree
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' W=1 ARCH=i386
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
sparse warnings: (new ones prefixed by >>)
net/sched/cls_api.c:270:22: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __be16 [usertype] protocol @@ got unsigned int [usertype] protocol @@
net/sched/cls_api.c:270:22: sparse: expected restricted __be16 [usertype] protocol
net/sched/cls_api.c:270:22: sparse: got unsigned int [usertype] protocol
net/sched/cls_api.c:1675:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
net/sched/cls_api.c:1675:16: sparse: struct tcf_proto *
net/sched/cls_api.c:1675:16: sparse: struct tcf_proto [noderef] __rcu *
net/sched/cls_api.c:1776:20: sparse: sparse: incompatible types in comparison expression (different address spaces):
net/sched/cls_api.c:1776:20: sparse: struct tcf_proto [noderef] __rcu *
net/sched/cls_api.c:1776:20: sparse: struct tcf_proto *
net/sched/cls_api.c:1737:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
net/sched/cls_api.c:1737:25: sparse: struct tcf_proto [noderef] __rcu *
net/sched/cls_api.c:1737:25: sparse: struct tcf_proto *
net/sched/cls_api.c:1757:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
net/sched/cls_api.c:1757:16: sparse: struct tcf_proto *
net/sched/cls_api.c:1757:16: sparse: struct tcf_proto [noderef] __rcu *
net/sched/cls_api.c:1823:25: sparse: sparse: restricted __be16 degrades to integer
net/sched/cls_api.c:2497:50: sparse: sparse: restricted __be16 degrades to integer
>> net/sched/cls_api.c:3976:52: sparse: sparse: incorrect type in argument 3 (different base types) @@ expected unsigned int [usertype] protocol @@ got restricted __be16 [assigned] [usertype] protocol @@
net/sched/cls_api.c:3976:52: sparse: expected unsigned int [usertype] protocol
net/sched/cls_api.c:3976:52: sparse: got restricted __be16 [assigned] [usertype] protocol
net/sched/cls_api.c:3998:50: sparse: sparse: incorrect type in argument 2 (different base types) @@ expected unsigned int [usertype] protocol @@ got restricted __be16 [assigned] [usertype] protocol @@
net/sched/cls_api.c:3998:50: sparse: expected unsigned int [usertype] protocol
net/sched/cls_api.c:3998:50: sparse: got restricted __be16 [assigned] [usertype] protocol
net/sched/cls_api.c:4006:64: sparse: sparse: incorrect type in argument 3 (different base types) @@ expected unsigned int [usertype] protocol @@ got restricted __be16 [assigned] [usertype] protocol @@
net/sched/cls_api.c:4006:64: sparse: expected unsigned int [usertype] protocol
net/sched/cls_api.c:4006:64: sparse: got restricted __be16 [assigned] [usertype] protocol
vim +3976 net/sched/cls_api.c
3924
3925 int bpf_tc_link_attach(union bpf_attr *attr, struct bpf_prog *prog)
3926 {
3927 struct net *net = current->nsproxy->net_ns;
3928 struct tcf_chain_info chain_info;
3929 u32 chain_index, prio, parent;
3930 struct tcf_block *block;
3931 struct tcf_chain *chain;
3932 struct tcf_proto *tp;
3933 int err, tp_created;
3934 unsigned long cl;
3935 struct Qdisc *q;
3936 __be16 protocol;
3937 void *fh;
3938
3939 /* Caller already checks bpf_capable */
3940 if (!ns_capable(current->nsproxy->net_ns->user_ns, CAP_NET_ADMIN))
3941 return -EPERM;
3942
3943 if (attr->link_create.flags ||
3944 !attr->link_create.target_ifindex ||
3945 !tc_flags_valid(attr->link_create.tc.gen_flags))
3946 return -EINVAL;
3947
3948 replay:
3949 parent = attr->link_create.tc.parent;
3950 prio = attr->link_create.tc.priority;
3951 protocol = htons(ETH_P_ALL);
3952 chain_index = 0;
3953 tp_created = 0;
3954 prio <<= 16;
3955 cl = 0;
3956
3957 /* Address this when cls_bpf switches to RTNL_FLAG_DOIT_UNLOCKED */
3958 rtnl_lock();
3959
3960 block = tcf_block_find(net, &q, &parent, &cl,
3961 attr->link_create.target_ifindex, parent, NULL);
3962 if (IS_ERR(block)) {
3963 err = PTR_ERR(block);
3964 goto out_unlock;
3965 }
3966 block->classid = parent;
3967
3968 chain = tcf_chain_get(block, chain_index, true);
3969 if (!chain) {
3970 err = -ENOMEM;
3971 goto out_block;
3972 }
3973
3974 mutex_lock(&chain->filter_chain_lock);
3975
> 3976 tp = tcf_chain_tp_find(chain, &chain_info, protocol,
3977 prio ?: TC_H_MAKE(0x80000000U, 0U),
3978 !prio);
3979 if (IS_ERR(tp)) {
3980 err = PTR_ERR(tp);
3981 goto out_chain_unlock;
3982 }
3983
3984 if (!tp) {
3985 struct tcf_proto *tp_new = NULL;
3986
3987 if (chain->flushing) {
3988 err = -EAGAIN;
3989 goto out_chain_unlock;
3990 }
3991
3992 if (!prio)
3993 prio = tcf_auto_prio(tcf_chain_tp_prev(chain,
3994 &chain_info));
3995
3996 mutex_unlock(&chain->filter_chain_lock);
3997
3998 tp_new = tcf_proto_create("bpf", protocol, prio, chain, true,
3999 NULL);
4000 if (IS_ERR(tp_new)) {
4001 err = PTR_ERR(tp_new);
4002 goto out_chain;
4003 }
4004
4005 tp_created = 1;
4006 tp = tcf_chain_tp_insert_unique(chain, tp_new, protocol, prio,
4007 true);
4008 if (IS_ERR(tp)) {
4009 err = PTR_ERR(tp);
4010 goto out_chain;
4011 }
4012 } else {
4013 mutex_unlock(&chain->filter_chain_lock);
4014 }
4015
4016 fh = tp->ops->get(tp, attr->link_create.tc.handle);
4017
4018 if (!tp->ops->bpf_link_change)
4019 err = -EDEADLK;
4020 else
4021 err = tp->ops->bpf_link_change(net, tp, prog, &fh,
4022 attr->link_create.tc.handle,
4023 attr->link_create.tc.gen_flags);
4024 if (err >= 0 && q)
4025 q->flags &= ~TCQ_F_CAN_BYPASS;
4026
4027 out:
4028 if (err < 0 && tp_created)
4029 tcf_chain_tp_delete_empty(chain, tp, true, NULL);
4030 out_chain:
4031 if (chain) {
4032 if (!IS_ERR_OR_NULL(tp))
4033 tcf_proto_put(tp, true, NULL);
4034 /* Chain reference only kept for tp creation
4035 * to pair with tcf_chain_put from tcf_proto_destroy
4036 */
4037 if (!tp_created)
4038 tcf_chain_put(chain);
4039 }
4040 out_block:
4041 tcf_block_release(q, block, true);
4042 out_unlock:
4043 rtnl_unlock();
4044 if (err == -EAGAIN)
4045 goto replay;
4046 return err;
4047 out_chain_unlock:
4048 mutex_unlock(&chain->filter_chain_lock);
4049 goto out;
4050 }
4051
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 51346 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH bpf-next v2 3/7] net: sched: add bpf_link API for bpf classifier
Date: Fri, 04 Jun 2021 19:32:30 +0800 [thread overview]
Message-ID: <202106041949.dHY7EvgX-lkp@intel.com> (raw)
In-Reply-To: <20210604063116.234316-4-memxor@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 7998 bytes --]
Hi Kumar,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on bpf-next/master]
url: https://github.com/0day-ci/linux/commits/Kumar-Kartikeya-Dwivedi/Add-bpf_link-based-TC-BPF-API/20210604-143611
base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master
config: i386-randconfig-s001-20210603 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.3-341-g8af24329-dirty
# https://github.com/0day-ci/linux/commit/a8da2c7297ab4c27511723367a5679b51bd5af7c
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Kumar-Kartikeya-Dwivedi/Add-bpf_link-based-TC-BPF-API/20210604-143611
git checkout a8da2c7297ab4c27511723367a5679b51bd5af7c
# save the attached .config to linux build tree
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' W=1 ARCH=i386
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
sparse warnings: (new ones prefixed by >>)
net/sched/cls_api.c:270:22: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __be16 [usertype] protocol @@ got unsigned int [usertype] protocol @@
net/sched/cls_api.c:270:22: sparse: expected restricted __be16 [usertype] protocol
net/sched/cls_api.c:270:22: sparse: got unsigned int [usertype] protocol
net/sched/cls_api.c:1675:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
net/sched/cls_api.c:1675:16: sparse: struct tcf_proto *
net/sched/cls_api.c:1675:16: sparse: struct tcf_proto [noderef] __rcu *
net/sched/cls_api.c:1776:20: sparse: sparse: incompatible types in comparison expression (different address spaces):
net/sched/cls_api.c:1776:20: sparse: struct tcf_proto [noderef] __rcu *
net/sched/cls_api.c:1776:20: sparse: struct tcf_proto *
net/sched/cls_api.c:1737:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
net/sched/cls_api.c:1737:25: sparse: struct tcf_proto [noderef] __rcu *
net/sched/cls_api.c:1737:25: sparse: struct tcf_proto *
net/sched/cls_api.c:1757:16: sparse: sparse: incompatible types in comparison expression (different address spaces):
net/sched/cls_api.c:1757:16: sparse: struct tcf_proto *
net/sched/cls_api.c:1757:16: sparse: struct tcf_proto [noderef] __rcu *
net/sched/cls_api.c:1823:25: sparse: sparse: restricted __be16 degrades to integer
net/sched/cls_api.c:2497:50: sparse: sparse: restricted __be16 degrades to integer
>> net/sched/cls_api.c:3976:52: sparse: sparse: incorrect type in argument 3 (different base types) @@ expected unsigned int [usertype] protocol @@ got restricted __be16 [assigned] [usertype] protocol @@
net/sched/cls_api.c:3976:52: sparse: expected unsigned int [usertype] protocol
net/sched/cls_api.c:3976:52: sparse: got restricted __be16 [assigned] [usertype] protocol
net/sched/cls_api.c:3998:50: sparse: sparse: incorrect type in argument 2 (different base types) @@ expected unsigned int [usertype] protocol @@ got restricted __be16 [assigned] [usertype] protocol @@
net/sched/cls_api.c:3998:50: sparse: expected unsigned int [usertype] protocol
net/sched/cls_api.c:3998:50: sparse: got restricted __be16 [assigned] [usertype] protocol
net/sched/cls_api.c:4006:64: sparse: sparse: incorrect type in argument 3 (different base types) @@ expected unsigned int [usertype] protocol @@ got restricted __be16 [assigned] [usertype] protocol @@
net/sched/cls_api.c:4006:64: sparse: expected unsigned int [usertype] protocol
net/sched/cls_api.c:4006:64: sparse: got restricted __be16 [assigned] [usertype] protocol
vim +3976 net/sched/cls_api.c
3924
3925 int bpf_tc_link_attach(union bpf_attr *attr, struct bpf_prog *prog)
3926 {
3927 struct net *net = current->nsproxy->net_ns;
3928 struct tcf_chain_info chain_info;
3929 u32 chain_index, prio, parent;
3930 struct tcf_block *block;
3931 struct tcf_chain *chain;
3932 struct tcf_proto *tp;
3933 int err, tp_created;
3934 unsigned long cl;
3935 struct Qdisc *q;
3936 __be16 protocol;
3937 void *fh;
3938
3939 /* Caller already checks bpf_capable */
3940 if (!ns_capable(current->nsproxy->net_ns->user_ns, CAP_NET_ADMIN))
3941 return -EPERM;
3942
3943 if (attr->link_create.flags ||
3944 !attr->link_create.target_ifindex ||
3945 !tc_flags_valid(attr->link_create.tc.gen_flags))
3946 return -EINVAL;
3947
3948 replay:
3949 parent = attr->link_create.tc.parent;
3950 prio = attr->link_create.tc.priority;
3951 protocol = htons(ETH_P_ALL);
3952 chain_index = 0;
3953 tp_created = 0;
3954 prio <<= 16;
3955 cl = 0;
3956
3957 /* Address this when cls_bpf switches to RTNL_FLAG_DOIT_UNLOCKED */
3958 rtnl_lock();
3959
3960 block = tcf_block_find(net, &q, &parent, &cl,
3961 attr->link_create.target_ifindex, parent, NULL);
3962 if (IS_ERR(block)) {
3963 err = PTR_ERR(block);
3964 goto out_unlock;
3965 }
3966 block->classid = parent;
3967
3968 chain = tcf_chain_get(block, chain_index, true);
3969 if (!chain) {
3970 err = -ENOMEM;
3971 goto out_block;
3972 }
3973
3974 mutex_lock(&chain->filter_chain_lock);
3975
> 3976 tp = tcf_chain_tp_find(chain, &chain_info, protocol,
3977 prio ?: TC_H_MAKE(0x80000000U, 0U),
3978 !prio);
3979 if (IS_ERR(tp)) {
3980 err = PTR_ERR(tp);
3981 goto out_chain_unlock;
3982 }
3983
3984 if (!tp) {
3985 struct tcf_proto *tp_new = NULL;
3986
3987 if (chain->flushing) {
3988 err = -EAGAIN;
3989 goto out_chain_unlock;
3990 }
3991
3992 if (!prio)
3993 prio = tcf_auto_prio(tcf_chain_tp_prev(chain,
3994 &chain_info));
3995
3996 mutex_unlock(&chain->filter_chain_lock);
3997
3998 tp_new = tcf_proto_create("bpf", protocol, prio, chain, true,
3999 NULL);
4000 if (IS_ERR(tp_new)) {
4001 err = PTR_ERR(tp_new);
4002 goto out_chain;
4003 }
4004
4005 tp_created = 1;
4006 tp = tcf_chain_tp_insert_unique(chain, tp_new, protocol, prio,
4007 true);
4008 if (IS_ERR(tp)) {
4009 err = PTR_ERR(tp);
4010 goto out_chain;
4011 }
4012 } else {
4013 mutex_unlock(&chain->filter_chain_lock);
4014 }
4015
4016 fh = tp->ops->get(tp, attr->link_create.tc.handle);
4017
4018 if (!tp->ops->bpf_link_change)
4019 err = -EDEADLK;
4020 else
4021 err = tp->ops->bpf_link_change(net, tp, prog, &fh,
4022 attr->link_create.tc.handle,
4023 attr->link_create.tc.gen_flags);
4024 if (err >= 0 && q)
4025 q->flags &= ~TCQ_F_CAN_BYPASS;
4026
4027 out:
4028 if (err < 0 && tp_created)
4029 tcf_chain_tp_delete_empty(chain, tp, true, NULL);
4030 out_chain:
4031 if (chain) {
4032 if (!IS_ERR_OR_NULL(tp))
4033 tcf_proto_put(tp, true, NULL);
4034 /* Chain reference only kept for tp creation
4035 * to pair with tcf_chain_put from tcf_proto_destroy
4036 */
4037 if (!tp_created)
4038 tcf_chain_put(chain);
4039 }
4040 out_block:
4041 tcf_block_release(q, block, true);
4042 out_unlock:
4043 rtnl_unlock();
4044 if (err == -EAGAIN)
4045 goto replay;
4046 return err;
4047 out_chain_unlock:
4048 mutex_unlock(&chain->filter_chain_lock);
4049 goto out;
4050 }
4051
---
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: 51346 bytes --]
next prev parent reply other threads:[~2021-06-04 11:33 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-04 6:31 [PATCH bpf-next v2 0/7] Add bpf_link based TC-BPF API Kumar Kartikeya Dwivedi
2021-06-04 6:31 ` [PATCH bpf-next v2 1/7] net: sched: refactor cls_bpf creation code Kumar Kartikeya Dwivedi
2021-06-04 6:31 ` [PATCH bpf-next v2 2/7] bpf: export bpf_link functions for modules Kumar Kartikeya Dwivedi
2021-06-04 6:31 ` [PATCH bpf-next v2 3/7] net: sched: add bpf_link API for bpf classifier Kumar Kartikeya Dwivedi
2021-06-04 11:32 ` kernel test robot [this message]
2021-06-04 11:32 ` kernel test robot
2021-06-05 3:08 ` Yonghong Song
2021-06-05 4:52 ` Kumar Kartikeya Dwivedi
2021-06-07 23:23 ` Andrii Nakryiko
2021-06-04 6:31 ` [PATCH bpf-next v2 4/7] net: sched: add lightweight update path for cls_bpf Kumar Kartikeya Dwivedi
2021-06-04 17:54 ` Alexei Starovoitov
2021-06-05 4:42 ` Kumar Kartikeya Dwivedi
2021-06-07 23:32 ` Andrii Nakryiko
2021-06-10 14:14 ` Kumar Kartikeya Dwivedi
2021-06-04 6:31 ` [PATCH bpf-next v2 5/7] tools: bpf.h: sync with kernel sources Kumar Kartikeya Dwivedi
2021-06-04 6:31 ` [PATCH bpf-next v2 6/7] libbpf: add bpf_link based TC-BPF management API Kumar Kartikeya Dwivedi
2021-06-04 18:01 ` Alexei Starovoitov
2021-06-05 4:51 ` Kumar Kartikeya Dwivedi
2021-06-07 23:37 ` Andrii Nakryiko
2021-06-05 17:09 ` Yonghong Song
2021-06-07 23:41 ` Andrii Nakryiko
2021-06-04 6:31 ` [PATCH bpf-next v2 7/7] libbpf: add selftest for " Kumar Kartikeya Dwivedi
2021-06-05 17:26 ` Yonghong Song
2021-06-07 23:57 ` Andrii Nakryiko
2022-06-10 0:24 ` [PATCH bpf-next v2 0/7] Add bpf_link based TC-BPF API Joanne Koong
2022-06-10 12:58 ` Kumar Kartikeya Dwivedi
2022-06-10 17:23 ` Joanne Koong
2022-06-10 19:07 ` Joanne Koong
2022-06-10 19:34 ` Kumar Kartikeya Dwivedi
2022-06-10 20:04 ` Daniel Borkmann
2022-06-10 22:01 ` Joanne Koong
2022-06-10 20:16 ` Toke Høiland-Jørgensen
2022-06-10 20:35 ` Daniel Borkmann
2022-06-10 20:41 ` Toke Høiland-Jørgensen
2022-06-10 21:52 ` Alexei Starovoitov
2022-06-10 22:02 ` Daniel Borkmann
2022-06-11 10:54 ` Toke Høiland-Jørgensen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202106041949.dHY7EvgX-lkp@intel.com \
--to=lkp@intel.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=brouer@redhat.com \
--cc=daniel@iogearbox.net \
--cc=jhs@mojatatu.com \
--cc=kbuild-all@lists.01.org \
--cc=memxor@gmail.com \
--cc=toke@redhat.com \
--cc=vladbu@nvidia.com \
--cc=xiyou.wangcong@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.