In the Linux kernel, the following vulnerability has been resolved:
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().
| Software | From | Fixed in |
|---|---|---|
| linux / linux_kernel | 5.3 | 5.4.211 |
| linux / linux_kernel | 5.5 | 5.10.138 |
| linux / linux_kernel | 5.11 | 5.15.63 |
| linux / linux_kernel | 5.16 | 5.19.4 |