V4L/DVB (6336): cx8802: Plug memory leak when unregistering a driver
authorTrent Piepho <xyzzy@speakeasy.org>
Fri, 5 Oct 2007 14:28:09 +0000 (11:28 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Mon, 22 Oct 2007 14:01:43 +0000 (12:01 -0200)
When a cx8802 sub-driver was unregistered, the struct cx8802_driver, which was
kmalloc()ed by cx8802_register_driver(), was deleted from the list of drivers,
but never freed.

Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
Reviewed-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
drivers/media/video/cx88/cx88-mpeg.c

index d4858e4c3e27ff9972d97f3a6a1574637e5437ae..448c67380945e62d4598793b19bb027445c7ac02 100644 (file)
@@ -735,6 +735,7 @@ int cx8802_unregister_driver(struct cx8802_driver *drv)
                                mutex_lock(&drv->core->lock);
                                list_del(&d->drvlist);
                                mutex_unlock(&drv->core->lock);
+                               kfree(d);
                        } else
                                printk(KERN_ERR "%s/2: cx8802 driver remove "
                                       "failed (%d)\n", dev->core->name, err);
@@ -817,6 +818,7 @@ static void __devexit cx8802_remove(struct pci_dev *pci_dev)
                        } else
                                printk(KERN_ERR "%s/2: cx8802 driver remove "
                                       "failed (%d)\n", dev->core->name, err);
+                       kfree(drv);
                }
        }