V4L/DVB (10760): cx18: Fix a memory leak of buffers used for sliced VBI insertion
authorAndy Walls <awalls@radix.net>
Sat, 21 Feb 2009 22:53:54 +0000 (19:53 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Mon, 30 Mar 2009 15:43:01 +0000 (12:43 -0300)
We leaked buffers every time a device was removed, if the user had enabled
sliced VBI insertion into the MPEG stream.  MythTV uses that.

Signed-off-by: Andy Walls <awalls@radix.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/cx18/cx18-driver.c

index 79b3bf5bcec19abda597a868d1d27107189a6983..544abbfb843e5eedb4dff73f6522661bbf20277b 100644 (file)
@@ -1066,6 +1066,7 @@ static void cx18_remove(struct pci_dev *pci_dev)
 {
        struct v4l2_device *v4l2_dev = pci_get_drvdata(pci_dev);
        struct cx18 *cx = to_cx18(v4l2_dev);
+       int i;
 
        CX18_DEBUG_INFO("Removing Card\n");
 
@@ -1095,7 +1096,10 @@ static void cx18_remove(struct pci_dev *pci_dev)
        release_mem_region(cx->base_addr, CX18_MEM_SIZE);
 
        pci_disable_device(cx->pci_dev);
-       /* FIXME - we leak cx->vbi.sliced_mpeg_data[i] allocations */
+
+       if (cx->vbi.sliced_mpeg_data[0] != NULL)
+               for (i = 0; i < CX18_VBI_FRAMES; i++)
+                       kfree(cx->vbi.sliced_mpeg_data[i]);
 
        CX18_INFO("Removed %s\n", cx->card_name);