virtio-serial: Check if more max_ports specified than we can handle
Currently virtio-serial supports a maximum of 31 ports. Specifying the 'max_ports' parameter to be > 31 on the cmd line causes badness. Ensure we initialise virtio-serial only if max_ports is within the supported range. Signed-off-by: Amit Shah <amit.shah@redhat.com> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
This commit is contained in:
parent
cdc6f54200
commit
5ab4bb598d
@ -734,11 +734,19 @@ VirtIODevice *virtio_serial_init(DeviceState *dev, uint32_t max_nr_ports)
|
||||
{
|
||||
VirtIOSerial *vser;
|
||||
VirtIODevice *vdev;
|
||||
uint32_t i;
|
||||
uint32_t i, max_supported_ports;
|
||||
|
||||
if (!max_nr_ports)
|
||||
return NULL;
|
||||
|
||||
/* Each port takes 2 queues, and one pair is for the control queue */
|
||||
max_supported_ports = VIRTIO_PCI_QUEUE_MAX / 2 - 1;
|
||||
|
||||
if (max_nr_ports > max_supported_ports) {
|
||||
error_report("maximum ports supported: %u", max_supported_ports);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
vdev = virtio_common_init("virtio-serial", VIRTIO_ID_CONSOLE,
|
||||
sizeof(struct virtio_console_config),
|
||||
sizeof(VirtIOSerial));
|
||||
|
Loading…
Reference in New Issue
Block a user