qemu-cr16/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
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
colo-stubs.c colo: move stubs out of stubs/ 2024-04-18 11:17:27 +02:00
colo.c
colo.h
dgram.c
dump.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
eth.c
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
l2tpv3.c
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.c net: Refactor stream logic for reuse in '-net passt' 2025-07-14 13:27:09 +08: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
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-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
tap_int.h tap: Remove tap_probe_vnet_hdr_len() 2024-06-04 15:14:25 +08:00
trace-events
trace.h
util.c
util.h
vde.c
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-vdpa.c net/vdpa: fix potential fd leak in net_init_vhost_vdpa() 2025-08-01 10:23:50 -04: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
vmnet_int.h