Skip to content

Commit

Permalink
[PATCH] isdn/gigaset/common.c: fix a memory leak
Browse files Browse the repository at this point in the history
Fix a memory leak spotted by the Coverity checker if
(!try_module_get(owner)).

Signed-off-by: Adrian Bunk <bunk@stusta.de>
Acked-by: Tilman Schmidt <tilman@imap.cc>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
Adrian Bunk authored and Linus Torvalds committed Apr 11, 2006
1 parent 8ca445d commit f4675c7
Showing 1 changed file with 8 additions and 5 deletions.
13 changes: 8 additions & 5 deletions drivers/isdn/gigaset/common.c
Original file line number Diff line number Diff line change
Expand Up @@ -1110,8 +1110,9 @@ struct gigaset_driver *gigaset_initdriver(unsigned minor, unsigned minors,
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;
Expand All @@ -1125,10 +1126,11 @@ struct gigaset_driver *gigaset_initdriver(unsigned minor, unsigned minors,

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;
Expand All @@ -1145,11 +1147,12 @@ struct gigaset_driver *gigaset_initdriver(unsigned minor, unsigned minors,

return drv;

out2:
out3:
kfree(drv->cs);
out2:
module_put(owner);
out1:
kfree(drv);
module_put(owner);
return NULL;
}
EXPORT_SYMBOL_GPL(gigaset_initdriver);
Expand Down

0 comments on commit f4675c7

Please sign in to comment.