[PATCH] vhost: fix compilation issue in async path

Maxime Coquelin maxime.coquelin at redhat.com
Wed Oct 5 17:09:18 CEST 2022



On 10/5/22 16:56, David Marchand wrote:
> On Wed, Oct 5, 2022 at 4:49 PM Maxime Coquelin
> <maxime.coquelin at redhat.com> wrote:
>>
>> This patch fixes a compilation issue met with GCC on
> 
> GCC 12 (it is worth detailing, since I and Thomas hit the same issue
> on some other cross compiling toolchains using GCC 12).
> 
>> Loongarch64:
> 
> LoongArch64
> 

Oops, I did the changes you asked me off-list, but forgot to format
the patch again!

Posting v2.

>>
>> In function ‘mbuf_to_desc’,
>>      inlined from ‘vhost_enqueue_async_packed’ at ../../../dpdk/lib/vhost/virtio_net.c:1822:6,
>>      inlined from ‘virtio_dev_rx_async_packed’ at ../../../dpdk/lib/vhost/virtio_net.c:1836:6,
>>      inlined from ‘virtio_dev_rx_async_submit_packed’ at ../../../dpdk/lib/vhost/virtio_net.c:1895:7:
>> ../../../dpdk/lib/vhost/virtio_net.c:1159:18: error: ‘buf_vec[0].buf_addr’ may be used uninitialized [-Werror=maybe-uninitialized]
>>   1159 |         buf_addr = buf_vec[vec_idx].buf_addr;
>>        |         ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
>> ../../../dpdk/lib/vhost/virtio_net.c: In function ‘virtio_dev_rx_async_submit_packed’:
>> ../../../dpdk/lib/vhost/virtio_net.c:1834:27: note: ‘buf_vec’ declared here
>>   1834 |         struct buf_vector buf_vec[BUF_VECTOR_MAX];
>>        |                           ^~~~~~~
>>
>> It happens because the compiler assumes that 'size'
>> variable in vhost_enqueue_async_packed could wrap to 0 since
>> 'size' is uint32_t and pkt->pkt_len too.
>>
>> In practice, it would never happen since 'pkt->pkt_len' is
>> unlikely to be close to UINT32_MAX, but let's just change
>> 'size' to uint64_t to make the compiler happy without
>> having to add runtime checks.
>>
>> Fixes: 873e8dad6f49 ("vhost: support packed ring in async datapath")
>> Cc: stable at dpdk.org
>>
>> Signed-off-by: Maxime Coquelin <maxime.coquelin at redhat.com>
> Reviewed-by: David Marchand <david.marchand at redhat.com>
> 
> 



More information about the stable mailing list