mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 07:43:54 -06:00
libqos: add qvirtqueue_cleanup()
qvirtqueue_setup() allocates the vring and virtqueue state. So far there has been no function to free it. Callers have been using guest_free() for the vring but forgot to free the QVirtQueue state. This patch solves the memory leak by introducing qvirtqueue_cleanup(). Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
c75f4c061b
commit
f1d3b99154
7 changed files with 36 additions and 7 deletions
|
@ -235,6 +235,15 @@ static QVirtQueue *qvirtio_pci_virtqueue_setup(QVirtioDevice *d,
|
|||
return &vqpci->vq;
|
||||
}
|
||||
|
||||
static void qvirtio_pci_virtqueue_cleanup(QVirtQueue *vq,
|
||||
QGuestAllocator *alloc)
|
||||
{
|
||||
QVirtQueuePCI *vqpci = container_of(vq, QVirtQueuePCI, vq);
|
||||
|
||||
guest_free(alloc, vq->desc);
|
||||
g_free(vqpci);
|
||||
}
|
||||
|
||||
static void qvirtio_pci_virtqueue_kick(QVirtioDevice *d, QVirtQueue *vq)
|
||||
{
|
||||
QVirtioPCIDevice *dev = (QVirtioPCIDevice *)d;
|
||||
|
@ -257,6 +266,7 @@ const QVirtioBus qvirtio_pci = {
|
|||
.get_queue_size = qvirtio_pci_get_queue_size,
|
||||
.set_queue_address = qvirtio_pci_set_queue_address,
|
||||
.virtqueue_setup = qvirtio_pci_virtqueue_setup,
|
||||
.virtqueue_cleanup = qvirtio_pci_virtqueue_cleanup,
|
||||
.virtqueue_kick = qvirtio_pci_virtqueue_kick,
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue