From: Florin Malita Date: Wed, 18 Jul 2007 22:04:46 +0000 (-0400) Subject: ISDN HiSax: uninitialized return in hisax_cs_setup X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=9ee0be05dc69b61e5a869bffebd638b31898dae2;p=openwrt%2Fstaging%2Fblogic.git 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: Florin Malita Signed-off-by: Jeff Garzik --- diff --git a/drivers/isdn/hisax/config.c b/drivers/isdn/hisax/config.c index 5f7907e57090..97097ef3491e 100644 --- a/drivers/isdn/hisax/config.c +++ b/drivers/isdn/hisax/config.c @@ -1146,14 +1146,12 @@ static int hisax_cs_setup(int cardnr, struct IsdnCard *card, } if (ret) { closecard(cardnr); - ret = 0; goto outf_cs; } init_tei(cs, cs->protocol); ret = CallcNewChan(cs); if (ret) { closecard(cardnr); - ret = 0; goto outf_cs; } /* ISAR needs firmware download first */ @@ -1165,7 +1163,7 @@ static int hisax_cs_setup(int cardnr, struct IsdnCard *card, outf_cs: kfree(cs); card->cs = NULL; - return ret; + return 0; } static int checkcard(int cardnr, char *id, int *busy_flag, struct module *lockowner)