cciss: fix memory leak

There's a memory leak in the cciss driver.

in alloc_cciss_hba() we may leak sizeof(ctlr_info_t) bytes if a
call to alloc_disk(1 << NWD_SHIFT) fails.
This patch should fix the issue.

Spotted by the Coverity checker.

Signed-off-by: Jesper Juhl <jesper.juhl@gmail.com>
Acked-by: Mike Miller <mike.miller@hp.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Jesper Juhl 2007-07-31 00:39:39 -07:00 committed by Linus Torvalds
parent ff0cfc66cd
commit f2912a1223

View File

@ -3227,12 +3227,15 @@ static int alloc_cciss_hba(void)
for (i = 0; i < MAX_CTLR; i++) { for (i = 0; i < MAX_CTLR; i++) {
if (!hba[i]) { if (!hba[i]) {
ctlr_info_t *p; ctlr_info_t *p;
p = kzalloc(sizeof(ctlr_info_t), GFP_KERNEL); p = kzalloc(sizeof(ctlr_info_t), GFP_KERNEL);
if (!p) if (!p)
goto Enomem; goto Enomem;
p->gendisk[0] = alloc_disk(1 << NWD_SHIFT); p->gendisk[0] = alloc_disk(1 << NWD_SHIFT);
if (!p->gendisk[0]) if (!p->gendisk[0]) {
kfree(p);
goto Enomem; goto Enomem;
}
hba[i] = p; hba[i] = p;
return i; return i;
} }