From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 4747EA034C; Thu, 1 Sep 2022 02:07:39 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D7A9F40395; Thu, 1 Sep 2022 02:07:38 +0200 (CEST) Received: from loongson.cn (mail.loongson.cn [114.242.206.163]) by mails.dpdk.org (Postfix) with ESMTP id 1450540143 for ; Thu, 1 Sep 2022 02:07:36 +0200 (CEST) Received: from localhost.localdomain (unknown [10.20.42.60]) by localhost.localdomain (Coremail) with SMTP id AQAAf8Bx32uN9w9jDVUOAA--.57303S3; Thu, 01 Sep 2022 08:06:38 +0800 (CST) Subject: Re: [PATCH v2] vhost: fix build To: david.marchand@redhat.com, maxime.coquelin@redhat.com, chenbo.xia@intel.com Cc: dev@dpdk.org, maobibo@loongson.cn References: <20220829082915.1056865-1-zhoumin@loongson.cn> From: zhoumin Message-ID: Date: Thu, 1 Sep 2022 08:06:37 +0800 User-Agent: Mozilla/5.0 (X11; Linux mips64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <20220829082915.1056865-1-zhoumin@loongson.cn> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US X-CM-TRANSID: AQAAf8Bx32uN9w9jDVUOAA--.57303S3 X-Coremail-Antispam: 1UD129KBjvJXoWxur4ktryDtr47tF47GryUKFg_yoW5Jw15pr sxJwnrCFyxKF4I9a93Xa10k348Aas7Ca42krsxW3W7CFW3Kr9rGr929Fy0krsrAryUu348 Xr10qayUtw1DuaDanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUkEb7Iv0xC_Kw4lb4IE77IF4wAFF20E14v26r1j6r4UM7CY07I2 0VC2zVCF04k26cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rw A2F7IY1VAKz4vEj48ve4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_Gr0_Xr1l84ACjcxK6xII jxv20xvEc7CjxVAFwI0_Gr0_Cr1l84ACjcxK6I8E87Iv67AKxVW8JVWxJwA2z4x0Y4vEx4 A2jsIEc7CjxVAFwI0_Gr0_Gr1UM2AIxVAIcxkEcVAq07x20xvEncxIr21l5I8CrVACY4xI 64kE6c02F40Ex7xfMcIj6xIIjxv20xvE14v26r1j6r18McIj6I8E87Iv67AKxVWUJVW8Jw Am72CE4IkC6x0Yz7v_Jr0_Gr1lF7xvr2IY64vIr41lc7I2V7IY0VAS07AlzVAYIcxG8wCY 02Avz4vE-syl42xK82IYc2Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAqx4 xG67AKxVWUJVWUGwC20s026x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r126r1D MIIYrxkI7VAKI48JMIIF0xvE2Ix0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2IY6xkF7I 0E14v26r1j6r4UMIIF0xvE42xK8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv67AKxVWU JVW8JwCI42IY6I8E87Iv6xkF7I0E14v26r1j6r4UYxBIdaVFxhVjvjDU0xZFpf9x07bOoG dUUUUU= X-CM-SenderInfo: 52kr3ztlq6z05rqj20fqof0/ X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sincerely ping. On 2022年08月29日 16:29, Min Zhou wrote: > On CentOS 8 or Debian 10.4 systems using gcc 12.1 to cross > compile DPDK, gcc shows a following warning which will cause > build to fail when build is run with -werror: > > In function 'mbuf_to_desc', > inlined from 'vhost_enqueue_async_packed' at ../lib/vhost/virtio_net.c:1826:6, > inlined from 'virtio_dev_rx_async_packed' at ../lib/vhost/virtio_net.c:1840:6, > inlined from 'virtio_dev_rx_async_submit_packed.constprop' at ../lib/vhost/virtio_net.c:1900:7: > ../lib/vhost/virtio_net.c:1161:35: error: 'buf_vec[0].buf_len' may be used uninitialized [-Werror=maybe-uninitialized] > 1161 | buf_len = buf_vec[vec_idx].buf_len; > | ~~~~~~~~~~~~~~~~^~~~~~~~ > ../lib/vhost/virtio_net.c: In function 'virtio_dev_rx_async_submit_packed.constprop': > ../lib/vhost/virtio_net.c:1838:27: note: 'buf_vec' declared here > 1838 | struct buf_vector buf_vec[BUF_VECTOR_MAX]; > | ^~~~~~~ > cc1: all warnings being treated as errors > > Actually, there are eight places to see the same codes in the file > lib/vhost/virtio_net.c, and all these `buf_vec` arraies are > initialized by sub-function calls under various conditions. > > Although It's hard to understand why gcc just emits warning at one > of the eight places, adding validity checks for array length is > reasonable and can also fix the warning. > > Signed-off-by: David Marchand > Signed-off-by: Min Zhou > --- > lib/vhost/virtio_net.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/lib/vhost/virtio_net.c b/lib/vhost/virtio_net.c > index 35fa4670fd..99233f1759 100644 > --- a/lib/vhost/virtio_net.c > +++ b/lib/vhost/virtio_net.c > @@ -1153,7 +1153,7 @@ mbuf_to_desc(struct virtio_net *dev, struct vhost_virtqueue *vq, > struct virtio_net_hdr_mrg_rxbuf tmp_hdr, *hdr = NULL; > struct vhost_async *async = vq->async; > > - if (unlikely(m == NULL)) > + if (unlikely(m == NULL || nr_vec == 0)) > return -1; > > buf_addr = buf_vec[vec_idx].buf_addr; > @@ -2673,6 +2673,9 @@ desc_to_mbuf(struct virtio_net *dev, struct vhost_virtqueue *vq, > struct vhost_async *async = vq->async; > struct async_inflight_info *pkts_info; > > + if (unlikely(nr_vec == 0)) > + return -1; > + > buf_addr = buf_vec[vec_idx].buf_addr; > buf_iova = buf_vec[vec_idx].buf_iova; > buf_len = buf_vec[vec_idx].buf_len; -- Thanks, Min Zhou