summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorSuman Anna <s-anna@ti.com>2015-09-16 19:29:17 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2016-03-03 15:06:49 -0800
commit6c08efea2e18f6ea6931d619e27fbe900e3af9ad (patch)
tree70eb762a9777450c54191b5f339e394b16d4881f /drivers
parent6fa733e9dba350f1c4de4ff3cde8ee0afc9243e5 (diff)
downloadlwn-6c08efea2e18f6ea6931d619e27fbe900e3af9ad.tar.gz
lwn-6c08efea2e18f6ea6931d619e27fbe900e3af9ad.zip
virtio: fix memory leak of virtio ida cache layers
commit c13f99b7e945dad5273a8b7ee230f4d1f22d3354 upstream. The virtio core uses a static ida named virtio_index_ida for assigning index numbers to virtio devices during registration. The ida core may allocate some internal idr cache layers and an ida bitmap upon any ida allocation, and all these layers are truely freed only upon the ida destruction. The virtio_index_ida is not destroyed at present, leading to a memory leak when using the virtio core as a module and atleast one virtio device is registered and unregistered. Fix this by invoking ida_destroy() in the virtio core module exit. Signed-off-by: Suman Anna <s-anna@ti.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/virtio/virtio.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/virtio/virtio.c b/drivers/virtio/virtio.c
index fed0ce198ae3..64eba4f51f71 100644
--- a/drivers/virtio/virtio.c
+++ b/drivers/virtio/virtio.c
@@ -249,6 +249,7 @@ static int virtio_init(void)
static void __exit virtio_exit(void)
{
bus_unregister(&virtio_bus);
+ ida_destroy(&virtio_index_ida);
}
core_initcall(virtio_init);
module_exit(virtio_exit);