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>
This commit is contained in:
parent
89a47942f0
commit
a04036a312
|
@ -735,6 +735,7 @@ int cx8802_unregister_driver(struct cx8802_driver *drv)
|
||||||
mutex_lock(&drv->core->lock);
|
mutex_lock(&drv->core->lock);
|
||||||
list_del(&d->drvlist);
|
list_del(&d->drvlist);
|
||||||
mutex_unlock(&drv->core->lock);
|
mutex_unlock(&drv->core->lock);
|
||||||
|
kfree(d);
|
||||||
} else
|
} else
|
||||||
printk(KERN_ERR "%s/2: cx8802 driver remove "
|
printk(KERN_ERR "%s/2: cx8802 driver remove "
|
||||||
"failed (%d)\n", dev->core->name, err);
|
"failed (%d)\n", dev->core->name, err);
|
||||||
|
@ -817,6 +818,7 @@ static void __devexit cx8802_remove(struct pci_dev *pci_dev)
|
||||||
} else
|
} else
|
||||||
printk(KERN_ERR "%s/2: cx8802 driver remove "
|
printk(KERN_ERR "%s/2: cx8802 driver remove "
|
||||||
"failed (%d)\n", dev->core->name, err);
|
"failed (%d)\n", dev->core->name, err);
|
||||||
|
kfree(drv);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue