aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/isdn
diff options
context:
space:
mode:
authorFlorin Malita <fmalita@gmail.com>2007-07-18 18:04:46 -0400
committerJeff Garzik <jeff@garzik.org>2007-07-18 18:17:23 -0400
commit9ee0be05dc69b61e5a869bffebd638b31898dae2 (patch)
tree22a6df6aef8d03caac126a5dc88e9977a1354768 /drivers/isdn
parent5bae7ac9feba925fd0099057f6b23d7be80b7b41 (diff)
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 <fmalita@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/isdn')
-rw-r--r--drivers/isdn/hisax/config.c4
1 files changed, 1 insertions, 3 deletions
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,
1146 } 1146 }
1147 if (ret) { 1147 if (ret) {
1148 closecard(cardnr); 1148 closecard(cardnr);
1149 ret = 0;
1150 goto outf_cs; 1149 goto outf_cs;
1151 } 1150 }
1152 init_tei(cs, cs->protocol); 1151 init_tei(cs, cs->protocol);
1153 ret = CallcNewChan(cs); 1152 ret = CallcNewChan(cs);
1154 if (ret) { 1153 if (ret) {
1155 closecard(cardnr); 1154 closecard(cardnr);
1156 ret = 0;
1157 goto outf_cs; 1155 goto outf_cs;
1158 } 1156 }
1159 /* ISAR needs firmware download first */ 1157 /* ISAR needs firmware download first */
@@ -1165,7 +1163,7 @@ static int hisax_cs_setup(int cardnr, struct IsdnCard *card,
1165outf_cs: 1163outf_cs:
1166 kfree(cs); 1164 kfree(cs);
1167 card->cs = NULL; 1165 card->cs = NULL;
1168 return ret; 1166 return 0;
1169} 1167}
1170 1168
1171static int checkcard(int cardnr, char *id, int *busy_flag, struct module *lockowner) 1169static int checkcard(int cardnr, char *id, int *busy_flag, struct module *lockowner)