Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
net/virtio: fix crash when configured twice
[ upstream commit 52bd03e969e9b38a7357287aece2488c7f92158f ] When first attempt to configure a device with RX interrupt enabled fails for some reason (e.g. because "Multiple intr vector not supported"), second attempt to configure the device with RX interrupt disabled and feature set unchanged will succeed but will leave virtio queues not allocated. Accessing the queues will cause a segfault. First attempt: - virtio_dev_configure() - virtio_init_device() is called to reinit the device because "dev->data->dev_conf.intr_conf.rxq" is "1" - virtio_configure_intr() fails and returns an error - virtio_free_queues() frees previously allocated virtio queues - virtio_init_device() fails and returns an error - virtio_dev_configure() fails and returns an error Second attempt: - virtio_dev_configure() - This time virtio_init_device() is not called, virtio queues are not allocated With this fix, reinit the device during configuration if virtio queues are not allocated. Fixes: 2b38151 ("net/virtio: fix queue memory leak on error") Signed-off-by: Alexander Chernavin <achernavin@netgate.com> Reviewed-by: Chenbo Xia <chenbo.xia@intel.com>
- Loading branch information