[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <202106180013.j1Brew82-lkp@intel.com>
Date: Fri, 18 Jun 2021 01:07:58 +0800
From: kernel test robot <lkp@...el.com>
To: Tanner Love <tannerlove.kernel@...il.com>, netdev@...r.kernel.org
Cc: kbuild-all@...ts.01.org, davem@...emloft.net,
Alexei Starovoitov <ast@...nel.org>,
Daniel Borkmann <daniel@...earbox.net>,
Andrii Nakryiko <andrii@...nel.org>,
Eric Dumazet <edumazet@...gle.com>,
Willem de Bruijn <willemb@...gle.com>,
Petar Penkov <ppenkov@...gle.com>,
Jakub Kicinski <kuba@...nel.org>,
"Michael S . Tsirkin" <mst@...hat.com>
Subject: Re: [PATCH net-next v7 1/3] net: flow_dissector: extend bpf flow
dissector support with vnet hdr
Hi Tanner,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on net-next/master]
url: https://github.com/0day-ci/linux/commits/Tanner-Love/virtio_net-add-optional-flow-dissection-in-virtio_net_hdr_to_skb/20210617-082208
base: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git 0c33795231bff5df410bd405b569c66851e92d4b
config: s390-randconfig-s031-20210617 (attached as .config)
compiler: s390-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.3-341-g8af24329-dirty
# https://github.com/0day-ci/linux/commit/b03a1eb684b925a09ae011d0e620d98ebf3b0abd
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Tanner-Love/virtio_net-add-optional-flow-dissection-in-virtio_net_hdr_to_skb/20210617-082208
git checkout b03a1eb684b925a09ae011d0e620d98ebf3b0abd
# 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__' W=1 ARCH=s390
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@...el.com>
sparse warnings: (new ones prefixed by >>)
>> net/core/flow_dissector.c:882:40: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __virtio16 [assigned] [usertype] hdr_len @@ got unsigned short @@
net/core/flow_dissector.c:882:40: sparse: expected restricted __virtio16 [assigned] [usertype] hdr_len
net/core/flow_dissector.c:882:40: sparse: got unsigned short
>> net/core/flow_dissector.c:884:41: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __virtio16 [assigned] [usertype] gso_size @@ got unsigned short @@
net/core/flow_dissector.c:884:41: sparse: expected restricted __virtio16 [assigned] [usertype] gso_size
net/core/flow_dissector.c:884:41: sparse: got unsigned short
>> net/core/flow_dissector.c:886:43: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __virtio16 [assigned] [usertype] csum_start @@ got unsigned short @@
net/core/flow_dissector.c:886:43: sparse: expected restricted __virtio16 [assigned] [usertype] csum_start
net/core/flow_dissector.c:886:43: sparse: got unsigned short
>> net/core/flow_dissector.c:888:44: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __virtio16 [assigned] [usertype] csum_offset @@ got unsigned short @@
net/core/flow_dissector.c:888:44: sparse: expected restricted __virtio16 [assigned] [usertype] csum_offset
net/core/flow_dissector.c:888:44: sparse: got unsigned short
vim +882 net/core/flow_dissector.c
866
867 bool bpf_flow_dissect(struct bpf_prog *prog, struct bpf_flow_dissector *ctx,
868 __be16 proto, int nhoff, int hlen, unsigned int flags,
869 const struct virtio_net_hdr *vhdr,
870 bool vhdr_is_little_endian)
871 {
872 struct bpf_flow_keys *flow_keys = ctx->flow_keys;
873 u32 result;
874
875 /* vnet hdr is either machine endian (virtio spec < v1) or le (>= v1) */
876 #if defined(__BIG_ENDIAN_BITFIELD)
877 struct virtio_net_hdr vnet_hdr_local;
878
879 if (vhdr && vhdr_is_little_endian) {
880 vnet_hdr_local.flags = vhdr->flags;
881 vnet_hdr_local.gso_type = vhdr->gso_type;
> 882 vnet_hdr_local.hdr_len = __virtio16_to_cpu(false,
883 vhdr->hdr_len);
> 884 vnet_hdr_local.gso_size = __virtio16_to_cpu(false,
885 vhdr->gso_size);
> 886 vnet_hdr_local.csum_start = __virtio16_to_cpu(false,
887 vhdr->csum_start);
> 888 vnet_hdr_local.csum_offset = __virtio16_to_cpu(false,
889 vhdr->csum_offset);
890 vhdr = &vnet_hdr_local;
891 }
892 #endif
893
894 /* Pass parameters to the BPF program */
895 memset(flow_keys, 0, sizeof(*flow_keys));
896 flow_keys->n_proto = proto;
897 flow_keys->nhoff = nhoff;
898 flow_keys->thoff = flow_keys->nhoff;
899 flow_keys->vhdr = vhdr;
900
901 BUILD_BUG_ON((int)BPF_FLOW_DISSECTOR_F_PARSE_1ST_FRAG !=
902 (int)FLOW_DISSECTOR_F_PARSE_1ST_FRAG);
903 BUILD_BUG_ON((int)BPF_FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL !=
904 (int)FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL);
905 BUILD_BUG_ON((int)BPF_FLOW_DISSECTOR_F_STOP_AT_ENCAP !=
906 (int)FLOW_DISSECTOR_F_STOP_AT_ENCAP);
907 flow_keys->flags = flags;
908
909 result = bpf_prog_run_pin_on_cpu(prog, ctx);
910
911 flow_keys->nhoff = clamp_t(u16, flow_keys->nhoff, nhoff, hlen);
912 flow_keys->thoff = clamp_t(u16, flow_keys->thoff,
913 flow_keys->nhoff, hlen);
914
915 return result == BPF_OK;
916 }
917
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
Download attachment ".config.gz" of type "application/gzip" (17392 bytes)
Powered by blists - more mailing lists