Commit 9ee0be05 authored by Florin Malita's avatar Florin Malita Committed by Jeff Garzik

ISDN HiSax: uninitialized return in hisax_cs_setup

Coverity (1792) spotted a possibly uninitialized return value in case of
kmalloc() failure:

1116 static int hisax_cs_setup(int cardnr, struct IsdnCard *card,
1117                           struct IsdnCardState *cs)
1119         int ret;
1120
1121         if (!(cs->rcvbuf = kmalloc(MAX_DFRAME_LEN_L1, GFP_ATOMIC))) {
1122                 printk(KERN_WARNING "HiSax: No memory for isac rcvbuf\n");
1123                 ll_unload(cs);
1124                 goto outf_cs;
...
1165 outf_cs:
1166         kfree(cs);
1167         card->cs = NULL;
1168         return ret;

The straightforward solution would be to just add the missing
initialization but hardcoding the return value in the out_cs branch
(only taken on failure) seems to work just as well and it allows killing
a couple of other lines too.
Signed-off-by: default avatarFlorin Malita <fmalita@gmail.com>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent 5bae7ac9
...@@ -1146,14 +1146,12 @@ static int hisax_cs_setup(int cardnr, struct IsdnCard *card, ...@@ -1146,14 +1146,12 @@ static int hisax_cs_setup(int cardnr, struct IsdnCard *card,
} }
if (ret) { if (ret) {
closecard(cardnr); closecard(cardnr);
ret = 0;
goto outf_cs; goto outf_cs;
} }
init_tei(cs, cs->protocol); init_tei(cs, cs->protocol);
ret = CallcNewChan(cs); ret = CallcNewChan(cs);
if (ret) { if (ret) {
closecard(cardnr); closecard(cardnr);
ret = 0;
goto outf_cs; goto outf_cs;
} }
/* ISAR needs firmware download first */ /* ISAR needs firmware download first */
...@@ -1165,7 +1163,7 @@ static int hisax_cs_setup(int cardnr, struct IsdnCard *card, ...@@ -1165,7 +1163,7 @@ static int hisax_cs_setup(int cardnr, struct IsdnCard *card,
outf_cs: outf_cs:
kfree(cs); kfree(cs);
card->cs = NULL; card->cs = NULL;
return ret; return 0;
} }
static int checkcard(int cardnr, char *id, int *busy_flag, struct module *lockowner) static int checkcard(int cardnr, char *id, int *busy_flag, struct module *lockowner)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment