Skip to content

Commit 7d602f3

Browse files
nxpfrankligregkh
authored andcommitted
usb: cdns3 fix use-after-free at workaround 2
BUG: KFENCE: use-after-free read in __list_del_entry_valid+0x10/0xac cdns3_wa2_remove_old_request() { ... kfree(priv_req->request.buf); cdns3_gadget_ep_free_request(&priv_ep->endpoint, &priv_req->request); list_del_init(&priv_req->list); ^^^ use after free ... } cdns3_gadget_ep_free_request() free the space pointed by priv_req, but priv_req is used in the following list_del_init(). This patch move list_del_init() before cdns3_gadget_ep_free_request(). Signed-off-by: Frank Li <[email protected]> Signed-off-by: Faqiang Zhu <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent c5d337a commit 7d602f3

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

drivers/usb/cdns3/cdns3-gadget.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -625,9 +625,9 @@ static void cdns3_wa2_remove_old_request(struct cdns3_endpoint *priv_ep)
625625
trace_cdns3_wa2(priv_ep, "removes eldest request");
626626

627627
kfree(priv_req->request.buf);
628+
list_del_init(&priv_req->list);
628629
cdns3_gadget_ep_free_request(&priv_ep->endpoint,
629630
&priv_req->request);
630-
list_del_init(&priv_req->list);
631631
--priv_ep->wa2_counter;
632632

633633
if (!chain)

0 commit comments

Comments
 (0)