From: Trent Piepho <xyzzy@speakeasy.org>
Date: Fri, 5 Oct 2007 14:28:09 +0000 (-0300)
Subject: V4L/DVB (6336): cx8802: Plug memory leak when unregistering a driver
X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=a04036a3129e09a9b9097de2b1f77dd82a6e9ac3;p=GitHub%2Fexynos8895%2Fandroid_kernel_samsung_universal8895.git

V4L/DVB (6336): cx8802: Plug memory leak when unregistering a driver

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>
---

diff --git a/drivers/media/video/cx88/cx88-mpeg.c b/drivers/media/video/cx88/cx88-mpeg.c
index d4858e4c3e27..448c67380945 100644
--- a/drivers/media/video/cx88/cx88-mpeg.c
+++ b/drivers/media/video/cx88/cx88-mpeg.c
@@ -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);
 		}
 	}