diff options
author | Christophe JAILLET <christophe.jaillet@wanadoo.fr> | 2017-08-29 21:23:49 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2017-09-09 17:39:38 +0200 |
commit | 5555eb956edc3c89f59ed7636b29a3a4d0dd8063 (patch) | |
tree | b78121cdb7468b9ea636271d0465ced2a01a4e3f /drivers/base | |
parent | ffb58b875d241f4121335a7668da743f26c0514b (diff) | |
download | linux-stable-5555eb956edc3c89f59ed7636b29a3a4d0dd8063.tar.gz linux-stable-5555eb956edc3c89f59ed7636b29a3a4d0dd8063.tar.bz2 linux-stable-5555eb956edc3c89f59ed7636b29a3a4d0dd8063.zip |
driver core: bus: Fix a potential double free
commit 0f9b011d3321ca1079c7a46c18cb1956fbdb7bcb upstream.
The .release function of driver_ktype is 'driver_release()'.
This function frees the container_of this kobject.
So, this memory must not be freed explicitly in the error handling path of
'bus_add_driver()'. Otherwise a double free will occur.
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/base')
-rw-r--r-- | drivers/base/bus.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/base/bus.c b/drivers/base/bus.c index 6470eb8088f4..e32a74eb28a3 100644 --- a/drivers/base/bus.c +++ b/drivers/base/bus.c @@ -736,7 +736,7 @@ int bus_add_driver(struct device_driver *drv) out_unregister: kobject_put(&priv->kobj); - kfree(drv->p); + /* drv->p is freed in driver_release() */ drv->p = NULL; out_put_bus: bus_put(bus); |