Messages in this thread Patch in this message |  | | | Date | Tue, 4 Apr 2006 21:00:02 +0200 | | From | Adrian Bunk <> | | Subject | [2.6 patch] isdn/gigaset/common.c: fix a memory leak |
| |
This patch fixes a memory leak spotted by the Coverity checker if (!try_module_get(owner)). Signed-off-by: Adrian Bunk <bunk@stusta.de>
--- drivers/isdn/gigaset/common.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) --- linux-2.6.17-rc1-mm1-full/drivers/isdn/gigaset/common.c.old 2006-04-04 19:45:19.000000000 +0200 +++ linux-2.6.17-rc1-mm1-full/drivers/isdn/gigaset/common.c 2006-04-04 19:51:23.000000000 +0200 @@ -1110,8 +1110,9 @@ struct gigaset_driver *gigaset_initdrive drv = kmalloc(sizeof *drv, GFP_KERNEL); if (!drv) return NULL; + if (!try_module_get(owner)) - return NULL; + goto out1; drv->cs = NULL; drv->have_tty = 0; @@ -1125,10 +1126,11 @@ struct gigaset_driver *gigaset_initdrive drv->cs = kmalloc(minors * sizeof *drv->cs, GFP_KERNEL); if (!drv->cs) - goto out1; + goto out2; + drv->flags = kmalloc(minors * sizeof *drv->flags, GFP_KERNEL); if (!drv->flags) - goto out2; + goto out3; for (i = 0; i < minors; ++i) { drv->flags[i] = 0; @@ -1145,11 +1147,12 @@ struct gigaset_driver *gigaset_initdrive return drv; -out2: +out3: kfree(drv->cs); +out2: + module_put(owner); out1: kfree(drv); - module_put(owner); return NULL; } EXPORT_SYMBOL_GPL(gigaset_initdriver); - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |