numam-dpdk/lib
Maxime Coquelin 4226aa9cac vhost: fix build with GCC 12
This patch fixes a compilation issue met with GCC 12 on
LoongArch64:

In function ‘mbuf_to_desc’,
    inlined from ‘vhost_enqueue_async_packed’
    inlined from ‘virtio_dev_rx_async_packed’
    inlined from ‘virtio_dev_rx_async_submit_packed’
lib/vhost/virtio_net.c:1159:18: error:
        ‘buf_vec[0].buf_addr’ may be used uninitialized
 1159 |         buf_addr = buf_vec[vec_idx].buf_addr;
      |         ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/vhost/virtio_net.c: In function ‘virtio_dev_rx_async_submit_packed’:
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.

This patch also fixes similar patterns in three other
places, including one that also produces similar build
issue on ARM64 in vhost_enqueue_single_packed().

Fixes: 873e8dad6f ("vhost: support packed ring in async datapath")
Cc: stable@dpdk.org

Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Reviewed-by: David Marchand <david.marchand@redhat.com>
Tested-by: Amit Prakash Shukla <amitprakashs@marvell.com>
2022-10-06 12:18:09 +02:00
..
acl version: 22.11-rc0 2022-07-21 12:13:48 +02:00
bbdev version: 22.11-rc0 2022-07-21 12:13:48 +02:00
bitratestats version: 22.11-rc0 2022-07-21 12:13:48 +02:00
bpf eal: remove unneeded includes from a public header 2022-09-21 15:31:03 +02:00
cfgfile version: 22.11-rc0 2022-07-21 12:13:48 +02:00
cmdline version: 22.11-rc0 2022-07-21 12:13:48 +02:00
compressdev dev: hide driver object 2022-09-23 16:14:34 +02:00
cryptodev security: hide session structure 2022-10-04 22:37:54 +02:00
distributor eal: remove unneeded includes from a public header 2022-09-21 15:31:03 +02:00
dmadev dmadev: support telemetry dump dmadev 2022-10-03 12:03:36 +02:00
eal eal: fix return type of bsf safe functions 2022-10-06 02:26:32 +02:00
efd eal: remove unneeded includes from a public header 2022-09-21 15:31:03 +02:00
ethdev ethdev: support telemetry private dump 2022-10-03 12:03:36 +02:00
eventdev eventdev: introduce event cryptodev vector type 2022-10-02 20:33:24 +02:00
fib version: 22.11-rc0 2022-07-21 12:13:48 +02:00
flow_classify lib: remove unneeded header includes 2022-02-22 13:10:39 +01:00
gpudev dev: hide driver object 2022-09-23 16:14:34 +02:00
graph eal: remove unneeded includes from a public header 2022-09-21 15:31:03 +02:00
gro gro: fix chain index for more than 2 packets 2022-10-05 14:16:37 +02:00
gso version: 22.11-rc0 2022-07-21 12:13:48 +02:00
hash version: 22.11-rc0 2022-07-21 12:13:48 +02:00
ip_frag ip_frag: add IPv4 fragment copy 2022-08-29 16:24:18 +02:00
ipsec security: hide session structure 2022-10-04 22:37:54 +02:00
jobstats version: 22.11-rc0 2022-07-21 12:13:48 +02:00
kni version: 22.11-rc0 2022-07-21 12:13:48 +02:00
kvargs version: 22.11-rc0 2022-07-21 12:13:48 +02:00
latencystats version: 22.11-rc0 2022-07-21 12:13:48 +02:00
lpm version: 22.11-rc0 2022-07-21 12:13:48 +02:00
mbuf mem: fix API doc about allocation on secondary processes 2022-10-04 13:36:13 +02:00
member version: 22.11-rc0 2022-07-21 12:13:48 +02:00
mempool mem: fix API doc about allocation on secondary processes 2022-10-04 13:36:13 +02:00
meter eal: remove unneeded includes from a public header 2022-09-21 15:31:03 +02:00
metrics metrics: return error code on initialization failures 2022-10-03 12:03:36 +02:00
net net: fix build with -Wpedantic 2022-09-29 09:20:12 +02:00
node eal: remove unneeded includes from a public header 2022-09-21 15:31:03 +02:00
pcapng dev: hide driver object 2022-09-23 16:14:34 +02:00
pci eal: remove unneeded includes from a public header 2022-09-21 15:31:03 +02:00
pdump eal: remove unneeded includes from a public header 2022-09-21 15:31:03 +02:00
pipeline cryptodev: rework session framework 2022-10-04 22:04:59 +02:00
port port: prevent unnecessary flush for ring output port 2022-09-22 16:56:58 +02:00
power eal: remove unneeded includes from a public header 2022-09-21 15:31:03 +02:00
rawdev rawdev: support telemetry dump rawdev 2022-10-03 12:03:36 +02:00
rcu version: 22.11-rc0 2022-07-21 12:13:48 +02:00
regexdev eal: deprecate RTE_FUNC_PTR_* macros 2022-09-23 16:14:34 +02:00
reorder version: 22.11-rc0 2022-07-21 12:13:48 +02:00
rib version: 22.11-rc0 2022-07-21 12:13:48 +02:00
ring mem: fix API doc about allocation on secondary processes 2022-10-04 13:36:13 +02:00
sched eal: remove unneeded includes from a public header 2022-09-21 15:31:03 +02:00
security security: hide session structure 2022-10-04 22:37:54 +02:00
stack version: 22.11-rc0 2022-07-21 12:13:48 +02:00
table table: add entry ID for learner tables 2022-09-24 11:35:23 +02:00
telemetry telemetry: make help command more helpful 2022-09-26 13:49:38 +02:00
timer timer: fix stopping all timers 2022-10-05 15:29:54 +02:00
vhost vhost: fix build with GCC 12 2022-10-06 12:18:09 +02:00
meson.build build: add definitions for use as Meson subproject 2022-06-07 20:49:20 +02:00