qemu/net
Stefano Garzarella 4caf74916d net/vdpa: fix potential fd leak in net_init_vhost_vdpa()
Coverity reported a file descriptor leak (CID 1490785) that happens if
`vhost_vdpa_get_max_queue_pairs()` returns 0, since in that case
net_host_vdpa_init(), which should take ownership of the fd, is never
called.

vhost_vdpa_get_max_queue_pairs() returns 1 if VIRTIO_NET_F_MQ is not
negotiated, or a negative error if the ioctl() fails, or the maximum
number of queue pairs exposed by the device in the config space in the
`max_virtqueue_pairs` field. In the VIRTIO spec we have:
     The device MUST set max_virtqueue_pairs to between 1 and 0x8000
     inclusive, if it offers VIRTIO_NET_F_MQ.

So, if `vhost_vdpa_get_max_queue_pairs()` returns 0, it's really an
error since the device is violating the VIRTIO spec.

Treat also `queue_pairs == 0` as an error, and jump to the `err` label,
to return a negative value to the caller in any case.

Coverity: CID 1490785
Suggested-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
Message-Id: <20250714101156.30024-1-sgarzare@redhat.com>
Suggested-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Acked-by: Jason Wang <jasowang@redhat.com>
2025-08-01 10:23:50 -04:00
..
can qom: Make InterfaceInfo[] uses const 2025-04-25 17:00:41 +02:00
af-xdp.c net/af-xdp: Support pinned map path for AF_XDP sockets 2025-07-15 10:26:55 +08:00
announce.c qapi net: Elide redundant has_FOO in generated C 2022-12-14 20:04:47 +01:00
checksum.c net: checksum: Convert data to void * 2024-11-25 13:59:50 +08:00
clients.h net: Add passt network backend 2025-07-14 13:27:09 +08:00
colo-compare.c qom: Make InterfaceInfo[] uses const 2025-04-25 17:00:41 +02:00
colo-compare.h Add the function of colo_compare_cleanup 2021-06-11 10:30:13 +08:00
colo-stubs.c colo: move stubs out of stubs/ 2024-04-18 11:17:27 +02:00
colo.c net/colo.c: Fix the pointer issue reported by Coverity. 2022-09-02 10:22:39 +08:00
colo.h net/colo.c: Fix the pointer issue reported by Coverity. 2022-09-02 10:22:39 +08:00
dgram.c win32: replace closesocket() with close() wrapper 2023-03-13 15:39:31 +04:00
dump.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
eth.c net/eth: Clean up local variable shadowing 2023-09-29 10:07:16 +02:00
filter-buffer.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
filter-mirror.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
filter-replay.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
filter-rewriter.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
filter.c qom: Make InterfaceInfo[] uses const 2025-04-25 17:00:41 +02:00
hub.c net: Add passt network backend 2025-07-14 13:27:09 +08:00
hub.h net: Remove deprecated [hub_id name] tuple of 'hostfwd_add' / 'hostfwd_remove' 2020-03-09 18:44:04 +00:00
l2tpv3.c net: Increase L2TPv3 buffer to fit jumboframes 2023-02-17 13:31:33 +08:00
meson.build net: Add passt network backend 2025-07-14 13:27:09 +08:00
net-hmp-cmds.c qapi: Move include/qapi/qmp/ to include/qobject/ 2025-02-10 15:33:16 +01:00
net.c virtio,pci,pc: features, fixes, tests 2025-07-16 07:00:47 -04:00
netmap.c tap: Remove qemu_using_vnet_hdr() 2024-06-04 15:14:25 +08:00
passt.c net/passt: Initialize "error" variable in net_passt_send() (CID 1612368) 2025-07-21 10:23:03 +08:00
queue.c net: Remove deadcode 2024-10-03 17:26:05 +03:00
slirp.c qapi: Move include/qapi/qmp/ to include/qobject/ 2025-02-10 15:33:16 +01:00
socket.c net/socket: skip automatic zero-init of large array 2025-06-12 13:40:16 -04:00
stream_data.c net: Refactor stream logic for reuse in '-net passt' 2025-07-14 13:27:09 +08:00
stream_data.h net: Refactor stream logic for reuse in '-net passt' 2025-07-14 13:27:09 +08:00
stream.c net: Refactor stream logic for reuse in '-net passt' 2025-07-14 13:27:09 +08:00
tap_int.h tap: Remove tap_probe_vnet_hdr_len() 2024-06-04 15:14:25 +08:00
tap-bsd.c tap: Remove tap_probe_vnet_hdr_len() 2024-06-04 15:14:25 +08:00
tap-linux.c tap-linux: Open ipvtap and macvtap 2025-03-10 17:07:16 +08:00
tap-linux.h tap: Add USO support to tap device. 2023-09-18 14:36:13 +08:00
tap-solaris.c tap: Remove tap_probe_vnet_hdr_len() 2024-06-04 15:14:25 +08:00
tap-stub.c tap: Remove tap_probe_vnet_hdr_len() 2024-06-04 15:14:25 +08:00
tap-win32.c net: Add get_vhost_net callback to NetClientInfo 2025-07-14 13:27:09 +08:00
tap.c tap: fix net_init_tap() return code 2025-07-21 10:21:33 +08:00
trace-events vdpa: add trace event for vhost_vdpa_net_load_mq 2024-03-12 17:56:55 -04:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
util.c net: Clean up includes 2016-02-04 17:41:30 +00:00
util.h Replace config-time define HOST_WORDS_BIGENDIAN 2022-04-06 10:50:37 +02:00
vde.c net: introduce qemu_set_info_str() function 2022-10-28 13:28:52 +08:00
vhost-user-stub.c net: Add save_acked_features callback to vhost_net 2025-07-14 13:27:09 +08:00
vhost-user.c net/vhost-user: Remove unused "err" from chr_closed_bh() (CID 1612365) 2025-07-21 10:23:17 +08:00
vhost-vdpa-stub.c vhost-net-vdpa: add stubs for when no virtio-net device is present 2022-07-20 16:58:08 +08:00
vhost-vdpa.c net/vdpa: fix potential fd leak in net_init_vhost_vdpa() 2025-08-01 10:23:50 -04:00
vmnet_int.h vmnet: stop recieving events when VM is stopped 2023-02-17 13:31:33 +08:00
vmnet-bridged.m net/vmnet: Drop ifdef for macOS versions older than 12.0 2024-07-02 06:58:48 +02:00
vmnet-common.m error: Strip trailing '\n' from an error string argument 2025-03-19 07:53:26 +01:00
vmnet-host.c net/vmnet: Drop ifdef for macOS versions older than 12.0 2024-07-02 06:58:48 +02:00
vmnet-shared.c net/vmnet: Drop ifdef for macOS versions older than 12.0 2024-07-02 06:58:48 +02:00