Skip to content

Commit 5f0e4ae

Browse files
AlexiousLuKalle Valo
authored andcommitted
wifi: libertas: fix some memleaks in lbs_allocate_cmd_buffer()
In the for statement of lbs_allocate_cmd_buffer(), if the allocation of cmdarray[i].cmdbuf fails, both cmdarray and cmdarray[i].cmdbuf needs to be freed. Otherwise, there will be memleaks in lbs_allocate_cmd_buffer(). Fixes: 876c9d3 ("[PATCH] Marvell Libertas 8388 802.11b/g USB driver") Signed-off-by: Zhipeng Lu <[email protected]> Signed-off-by: Kalle Valo <[email protected]> Link: https://msgid.link/[email protected]
1 parent 679dd27 commit 5f0e4ae

File tree

1 file changed

+11
-2
lines changed
  • drivers/net/wireless/marvell/libertas

1 file changed

+11
-2
lines changed

drivers/net/wireless/marvell/libertas/cmd.c

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1132,16 +1132,25 @@ int lbs_allocate_cmd_buffer(struct lbs_private *priv)
11321132
if (!cmdarray[i].cmdbuf) {
11331133
lbs_deb_host("ALLOC_CMD_BUF: ptempvirtualaddr is NULL\n");
11341134
ret = -1;
1135-
goto done;
1135+
goto free_cmd_array;
11361136
}
11371137
}
11381138

11391139
for (i = 0; i < LBS_NUM_CMD_BUFFERS; i++) {
11401140
init_waitqueue_head(&cmdarray[i].cmdwait_q);
11411141
lbs_cleanup_and_insert_cmd(priv, &cmdarray[i]);
11421142
}
1143-
ret = 0;
1143+
return 0;
11441144

1145+
free_cmd_array:
1146+
for (i = 0; i < LBS_NUM_CMD_BUFFERS; i++) {
1147+
if (cmdarray[i].cmdbuf) {
1148+
kfree(cmdarray[i].cmdbuf);
1149+
cmdarray[i].cmdbuf = NULL;
1150+
}
1151+
}
1152+
kfree(priv->cmd_array);
1153+
priv->cmd_array = NULL;
11451154
done:
11461155
return ret;
11471156
}

0 commit comments

Comments
 (0)