[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <202303230953.y0P1e1Fc-lkp@intel.com>
Date: Thu, 23 Mar 2023 10:06:44 +0800
From: kernel test robot <lkp@...el.com>
To: Xuan Zhuo <xuanzhuo@...ux.alibaba.com>, netdev@...r.kernel.org
Cc: llvm@...ts.linux.dev, oe-kbuild-all@...ts.linux.dev,
"Michael S. Tsirkin" <mst@...hat.com>,
Jason Wang <jasowang@...hat.com>,
Eric Dumazet <edumazet@...gle.com>,
Jakub Kicinski <kuba@...nel.org>,
Paolo Abeni <pabeni@...hat.com>,
Alexei Starovoitov <ast@...nel.org>,
Daniel Borkmann <daniel@...earbox.net>,
Jesper Dangaard Brouer <hawk@...nel.org>,
John Fastabend <john.fastabend@...il.com>,
virtualization@...ts.linux-foundation.org, bpf@...r.kernel.org
Subject: Re: [PATCH net-next 8/8] virtio_net: introduce receive_small_xdp()
Hi Xuan,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on net-next/main]
url: https://github.com/intel-lab-lkp/linux/commits/Xuan-Zhuo/virtio_net-mergeable-xdp-put-old-page-immediately/20230322-110445
patch link: https://lore.kernel.org/r/20230322030308.16046-9-xuanzhuo%40linux.alibaba.com
patch subject: [PATCH net-next 8/8] virtio_net: introduce receive_small_xdp()
config: i386-randconfig-a002 (https://download.01.org/0day-ci/archive/20230323/202303230953.y0P1e1Fc-lkp@intel.com/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e37457cb1d1)
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/intel-lab-lkp/linux/commit/6445923dc4c91e57f98b8356d0bd706e95dafaa1
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Xuan-Zhuo/virtio_net-mergeable-xdp-put-old-page-immediately/20230322-110445
git checkout 6445923dc4c91e57f98b8356d0bd706e95dafaa1
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=i386 olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=i386 SHELL=/bin/bash drivers/net/
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@...el.com>
| Link: https://lore.kernel.org/oe-kbuild-all/202303230953.y0P1e1Fc-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> drivers/net/virtio_net.c:969:6: warning: variable 'buflen' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
if (unlikely(xdp_headroom < virtnet_get_headroom(vi))) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/compiler.h:78:22: note: expanded from macro 'unlikely'
# define unlikely(x) __builtin_expect(!!(x), 0)
^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/virtio_net.c:990:22: note: uninitialized use occurs here
xdp_init_buff(&xdp, buflen, &rq->xdp_rxq);
^~~~~~
drivers/net/virtio_net.c:969:2: note: remove the 'if' if its condition is always true
if (unlikely(xdp_headroom < virtnet_get_headroom(vi))) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/virtio_net.c:958:21: note: initialize the variable 'buflen' to silence this warning
unsigned int buflen;
^
= 0
drivers/net/virtio_net.c:1428:6: warning: variable 'page' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
if (unlikely(len > truesize - room)) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/compiler.h:78:22: note: expanded from macro 'unlikely'
# define unlikely(x) __builtin_expect(!!(x), 0)
^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/virtio_net.c:1519:11: note: uninitialized use occurs here
put_page(page);
^~~~
drivers/net/virtio_net.c:1428:2: note: remove the 'if' if its condition is always false
if (unlikely(len > truesize - room)) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/virtio_net.c:1421:19: note: initialize the variable 'page' to silence this warning
struct page *page;
^
= NULL
drivers/net/virtio_net.c:1428:6: warning: variable 'num_buf' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
if (unlikely(len > truesize - room)) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/compiler.h:78:22: note: expanded from macro 'unlikely'
# define unlikely(x) __builtin_expect(!!(x), 0)
^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/virtio_net.c:1520:25: note: uninitialized use occurs here
mergeable_buf_free(rq, num_buf, dev, stats);
^~~~~~~
drivers/net/virtio_net.c:1428:2: note: remove the 'if' if its condition is always false
if (unlikely(len > truesize - room)) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/virtio_net.c:1422:13: note: initialize the variable 'num_buf' to silence this warning
int num_buf;
^
= 0
3 warnings generated.
vim +969 drivers/net/virtio_net.c
4941d472bf95b4 Jason Wang 2017-07-19 941
6445923dc4c91e Xuan Zhuo 2023-03-22 942 static struct sk_buff *receive_small_xdp(struct net_device *dev,
bb91accf27335c Jason Wang 2016-12-23 943 struct virtnet_info *vi,
bb91accf27335c Jason Wang 2016-12-23 944 struct receive_queue *rq,
6445923dc4c91e Xuan Zhuo 2023-03-22 945 struct bpf_prog *xdp_prog,
6445923dc4c91e Xuan Zhuo 2023-03-22 946 void *buf,
6445923dc4c91e Xuan Zhuo 2023-03-22 947 void *ctx,
186b3c998c50fc Jason Wang 2017-09-19 948 unsigned int len,
7d9d60fd4ab696 Toshiaki Makita 2018-07-23 949 unsigned int *xdp_xmit,
d46eeeaf99bcfa Jason Wang 2018-07-31 950 struct virtnet_rq_stats *stats)
f121159d72091f Michael S. Tsirkin 2013-11-28 951 {
4941d472bf95b4 Jason Wang 2017-07-19 952 unsigned int xdp_headroom = (unsigned long)ctx;
f6b10209b90d48 Jason Wang 2017-02-21 953 unsigned int header_offset = VIRTNET_RX_PAD + xdp_headroom;
f6b10209b90d48 Jason Wang 2017-02-21 954 unsigned int headroom = vi->hdr_len + header_offset;
6445923dc4c91e Xuan Zhuo 2023-03-22 955 struct virtio_net_hdr_mrg_rxbuf *hdr = buf + header_offset;
4941d472bf95b4 Jason Wang 2017-07-19 956 struct page *page = virt_to_head_page(buf);
4941d472bf95b4 Jason Wang 2017-07-19 957 struct page *xdp_page;
6445923dc4c91e Xuan Zhuo 2023-03-22 958 unsigned int buflen;
0354e4d19cd5de John Fastabend 2017-02-02 959 struct xdp_buff xdp;
6445923dc4c91e Xuan Zhuo 2023-03-22 960 struct sk_buff *skb;
6445923dc4c91e Xuan Zhuo 2023-03-22 961 unsigned int delta = 0;
6445923dc4c91e Xuan Zhuo 2023-03-22 962 unsigned int metasize = 0;
f6b10209b90d48 Jason Wang 2017-02-21 963 void *orig_data;
bb91accf27335c Jason Wang 2016-12-23 964 u32 act;
bb91accf27335c Jason Wang 2016-12-23 965
95dbe9e7b3720e Jesper Dangaard Brouer 2018-02-20 966 if (unlikely(hdr->hdr.gso_type))
bb91accf27335c Jason Wang 2016-12-23 967 goto err_xdp;
0354e4d19cd5de John Fastabend 2017-02-02 968
4941d472bf95b4 Jason Wang 2017-07-19 @969 if (unlikely(xdp_headroom < virtnet_get_headroom(vi))) {
4941d472bf95b4 Jason Wang 2017-07-19 970 int offset = buf - page_address(page) + header_offset;
4941d472bf95b4 Jason Wang 2017-07-19 971 unsigned int tlen = len + vi->hdr_len;
981f14d42a7f16 Heng Qi 2023-01-31 972 int num_buf = 1;
4941d472bf95b4 Jason Wang 2017-07-19 973
4941d472bf95b4 Jason Wang 2017-07-19 974 xdp_headroom = virtnet_get_headroom(vi);
4941d472bf95b4 Jason Wang 2017-07-19 975 header_offset = VIRTNET_RX_PAD + xdp_headroom;
4941d472bf95b4 Jason Wang 2017-07-19 976 headroom = vi->hdr_len + header_offset;
4941d472bf95b4 Jason Wang 2017-07-19 977 buflen = SKB_DATA_ALIGN(GOOD_PACKET_LEN + headroom) +
4941d472bf95b4 Jason Wang 2017-07-19 978 SKB_DATA_ALIGN(sizeof(struct skb_shared_info));
4941d472bf95b4 Jason Wang 2017-07-19 979 xdp_page = xdp_linearize_page(rq, &num_buf, page,
4941d472bf95b4 Jason Wang 2017-07-19 980 offset, header_offset,
4941d472bf95b4 Jason Wang 2017-07-19 981 &tlen);
4941d472bf95b4 Jason Wang 2017-07-19 982 if (!xdp_page)
4941d472bf95b4 Jason Wang 2017-07-19 983 goto err_xdp;
4941d472bf95b4 Jason Wang 2017-07-19 984
4941d472bf95b4 Jason Wang 2017-07-19 985 buf = page_address(xdp_page);
4941d472bf95b4 Jason Wang 2017-07-19 986 put_page(page);
4941d472bf95b4 Jason Wang 2017-07-19 987 page = xdp_page;
4941d472bf95b4 Jason Wang 2017-07-19 988 }
4941d472bf95b4 Jason Wang 2017-07-19 989
43b5169d8355cc Lorenzo Bianconi 2020-12-22 990 xdp_init_buff(&xdp, buflen, &rq->xdp_rxq);
be9df4aff65f18 Lorenzo Bianconi 2020-12-22 991 xdp_prepare_buff(&xdp, buf + VIRTNET_RX_PAD + vi->hdr_len,
be9df4aff65f18 Lorenzo Bianconi 2020-12-22 992 xdp_headroom, len, true);
f6b10209b90d48 Jason Wang 2017-02-21 993 orig_data = xdp.data;
4249e276b1ab30 Xuan Zhuo 2023-03-22 994
4249e276b1ab30 Xuan Zhuo 2023-03-22 995 act = virtnet_xdp_handler(xdp_prog, &xdp, dev, xdp_xmit, stats);
0354e4d19cd5de John Fastabend 2017-02-02 996
bb91accf27335c Jason Wang 2016-12-23 997 switch (act) {
4249e276b1ab30 Xuan Zhuo 2023-03-22 998 case VIRTNET_XDP_RES_PASS:
2de2f7f40ef923 John Fastabend 2017-02-02 999 /* Recalculate length in case bpf program changed it */
f6b10209b90d48 Jason Wang 2017-02-21 1000 delta = orig_data - xdp.data;
6870de435b90c0 Nikita V. Shirokov 2018-04-17 1001 len = xdp.data_end - xdp.data;
503d539a6e417b Yuya Kusakabe 2020-02-25 1002 metasize = xdp.data - xdp.data_meta;
bb91accf27335c Jason Wang 2016-12-23 1003 break;
4249e276b1ab30 Xuan Zhuo 2023-03-22 1004
4249e276b1ab30 Xuan Zhuo 2023-03-22 1005 case VIRTNET_XDP_RES_CONSUMED:
bb91accf27335c Jason Wang 2016-12-23 1006 goto xdp_xmit;
4249e276b1ab30 Xuan Zhuo 2023-03-22 1007
4249e276b1ab30 Xuan Zhuo 2023-03-22 1008 case VIRTNET_XDP_RES_DROP:
bb91accf27335c Jason Wang 2016-12-23 1009 goto err_xdp;
bb91accf27335c Jason Wang 2016-12-23 1010 }
bb91accf27335c Jason Wang 2016-12-23 1011
f6b10209b90d48 Jason Wang 2017-02-21 1012 skb = build_skb(buf, buflen);
053c9e18c6f9cf Wenliang Wang 2021-12-16 1013 if (!skb)
f6b10209b90d48 Jason Wang 2017-02-21 1014 goto err;
6445923dc4c91e Xuan Zhuo 2023-03-22 1015
f6b10209b90d48 Jason Wang 2017-02-21 1016 skb_reserve(skb, headroom - delta);
6870de435b90c0 Nikita V. Shirokov 2018-04-17 1017 skb_put(skb, len);
503d539a6e417b Yuya Kusakabe 2020-02-25 1018 if (metasize)
503d539a6e417b Yuya Kusakabe 2020-02-25 1019 skb_metadata_set(skb, metasize);
503d539a6e417b Yuya Kusakabe 2020-02-25 1020
f121159d72091f Michael S. Tsirkin 2013-11-28 1021 return skb;
bb91accf27335c Jason Wang 2016-12-23 1022
bb91accf27335c Jason Wang 2016-12-23 1023 err_xdp:
d46eeeaf99bcfa Jason Wang 2018-07-31 1024 stats->xdp_drops++;
053c9e18c6f9cf Wenliang Wang 2021-12-16 1025 err:
d46eeeaf99bcfa Jason Wang 2018-07-31 1026 stats->drops++;
4941d472bf95b4 Jason Wang 2017-07-19 1027 put_page(page);
bb91accf27335c Jason Wang 2016-12-23 1028 xdp_xmit:
bb91accf27335c Jason Wang 2016-12-23 1029 return NULL;
f121159d72091f Michael S. Tsirkin 2013-11-28 1030 }
f121159d72091f Michael S. Tsirkin 2013-11-28 1031
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests
Powered by blists - more mailing lists