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 01592A00C5; Fri, 9 Sep 2022 11:07:56 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id CA19840A7E; Fri, 9 Sep 2022 11:07:55 +0200 (CEST) Received: from loongson.cn (mail.loongson.cn [114.242.206.163]) by mails.dpdk.org (Postfix) with ESMTP id B7ACA4003F for ; Fri, 9 Sep 2022 11:07:54 +0200 (CEST) Received: from localhost.localdomain (unknown [10.20.42.60]) by localhost.localdomain (Coremail) with SMTP id AQAAf8DxPGtjAhtjkkkVAA--.24294S3; Fri, 09 Sep 2022 17:07:48 +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: Fri, 9 Sep 2022 17:07:46 +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: AQAAf8DxPGtjAhtjkkkVAA--.24294S3 X-Coremail-Antispam: 1UD129KBjvJXoWxGF43AF13ZF43Cr4UWw1fXrb_yoW5Jw1Dpr 43JwnrCFyxKF4I9a95Xa10k348Aas7C3W7KrsxW3W7CFW3KrnrGr92kFy0krsrAryUu348 Xr10qFyUtw1DuaDanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUvI14x267AKxVWUJVW8JwAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2ocxC64kIII0Yj41l84x0c7CEw4AK67xGY2AK02 1l84ACjcxK6xIIjxv20xvE14v26F1j6w1UM28EF7xvwVC0I7IYx2IY6xkF7I0E14v26r4U JVWxJr1l84ACjcxK6I8E87Iv67AKxVW0oVCq3wA2z4x0Y4vEx4A2jsIEc7CjxVAFwI0_Gc CE3s1le2I262IYc4CY6c8Ij28IcVAaY2xG8wAqx4xG64xvF2IEw4CE5I8CrVC2j2WlYx0E 2Ix0cI8IcVAFwI0_Jr0_Jr4lYx0Ex4A2jsIE14v26r1j6r4UMcvjeVCFs4IE7xkEbVWUJV W8JwACjcxG0xvEwIxGrwACjI8F5VA0II8E6IAqYI8I648v4I1lc7I2V7IY0VAS07AlzVAY IcxG8wCY02Avz4vE-syl42xK82IYc2Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2 IqxVAqx4xG67AKxVWUJVWUGwC20s026x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v2 6r126r1DMIIYrxkI7VAKI48JMIIF0xvE2Ix0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2 IY6xkF7I0E14v26r1j6r4UMIIF0xvE42xK8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv 67AKxVWUJVW8JwCI42IY6I8E87Iv6xkF7I0E14v26r1j6r4UYxBIdaVFxhVjvjDU0xZFpf 9x0JUywZ7UUUUU= 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 Kindly ping. Any feedback is appreciated. 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;