Skip to content

Commit e230a44

Browse files
Dan Carpentergregkh
authored andcommitted
staging: rtl8712: fix use after free bugs
_Read/Write_MACREG callbacks are NULL so the read/write_macreg_hdl() functions don't do anything except free the "pcmd" pointer. It results in a use after free. Delete them. Fixes: 2865d42 ("staging: r8712u: Add the new driver to the mainline kernel") Cc: stable <stable@kernel.org> Reported-by: Zheng Wang <hackerzheng666@gmail.com> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Link: https://lore.kernel.org/r/Yw4ASqkYcUhUfoY2@kili Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent e01f5c8 commit e230a44

File tree

1 file changed

+0
-36
lines changed

1 file changed

+0
-36
lines changed

drivers/staging/rtl8712/rtl8712_cmd.c

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -117,34 +117,6 @@ static void r871x_internal_cmd_hdl(struct _adapter *padapter, u8 *pbuf)
117117
kfree(pdrvcmd->pbuf);
118118
}
119119

120-
static u8 read_macreg_hdl(struct _adapter *padapter, u8 *pbuf)
121-
{
122-
void (*pcmd_callback)(struct _adapter *dev, struct cmd_obj *pcmd);
123-
struct cmd_obj *pcmd = (struct cmd_obj *)pbuf;
124-
125-
/* invoke cmd->callback function */
126-
pcmd_callback = cmd_callback[pcmd->cmdcode].callback;
127-
if (!pcmd_callback)
128-
r8712_free_cmd_obj(pcmd);
129-
else
130-
pcmd_callback(padapter, pcmd);
131-
return H2C_SUCCESS;
132-
}
133-
134-
static u8 write_macreg_hdl(struct _adapter *padapter, u8 *pbuf)
135-
{
136-
void (*pcmd_callback)(struct _adapter *dev, struct cmd_obj *pcmd);
137-
struct cmd_obj *pcmd = (struct cmd_obj *)pbuf;
138-
139-
/* invoke cmd->callback function */
140-
pcmd_callback = cmd_callback[pcmd->cmdcode].callback;
141-
if (!pcmd_callback)
142-
r8712_free_cmd_obj(pcmd);
143-
else
144-
pcmd_callback(padapter, pcmd);
145-
return H2C_SUCCESS;
146-
}
147-
148120
static u8 read_bbreg_hdl(struct _adapter *padapter, u8 *pbuf)
149121
{
150122
struct cmd_obj *pcmd = (struct cmd_obj *)pbuf;
@@ -213,14 +185,6 @@ static struct cmd_obj *cmd_hdl_filter(struct _adapter *padapter,
213185
pcmd_r = NULL;
214186

215187
switch (pcmd->cmdcode) {
216-
case GEN_CMD_CODE(_Read_MACREG):
217-
read_macreg_hdl(padapter, (u8 *)pcmd);
218-
pcmd_r = pcmd;
219-
break;
220-
case GEN_CMD_CODE(_Write_MACREG):
221-
write_macreg_hdl(padapter, (u8 *)pcmd);
222-
pcmd_r = pcmd;
223-
break;
224188
case GEN_CMD_CODE(_Read_BBREG):
225189
read_bbreg_hdl(padapter, (u8 *)pcmd);
226190
break;

0 commit comments

Comments
 (0)