In the Linux kernel, the following vulnerability has been resolved:
usb: typec: tcpm: fix double-free issue in tcpmportunregister_pd()
When unregister pd capabilitie in tcpm, KASAN will capture below double -free issue. The root cause is the same capabilitiy will be kfreed twice, the first time is kfreed by pdcapabilitiesrelease() and the second time is explicitly kfreed by tcpmportunregister_pd().
[ 3.988059] BUG: KASAN: double-free in tcpmportunregisterpd+0x1a4/0x3dc [ 3.995001] Free of addr ffff0008164d3000 by task kworker/u16:0/10 [ 4.001206] [ 4.002712] CPU: 2 PID: 10 Comm: kworker/u16:0 Not tainted 6.8.0-rc5-next-20240220-05616-g52728c567a55 #53 [ 4.012402] Hardware name: Freescale i.MX8QXP MEK (DT) [ 4.017569] Workqueue: eventsunbound deferredprobeworkfunc [ 4.023456] Call trace: [ 4.025920] dumpbacktrace+0x94/0xec [ 4.029629] showstack+0x18/0x24 [ 4.032974] dumpstacklvl+0x78/0x90 [ 4.036675] printreport+0xfc/0x5c0 [ 4.040289] kasanreportinvalidfree+0xa0/0xc0 [ 4.044937] _kasanslabfree+0x124/0x154 [ 4.049072] kfree+0xb4/0x1e8 [ 4.052069] tcpmportunregisterpd+0x1a4/0x3dc [ 4.056725] tcpmregisterport+0x1dd0/0x2558 [ 4.061121] tcpciregisterport+0x420/0x71c [ 4.065430] tcpciprobe+0x118/0x2e0
To fix the issue, this will remove kree() from tcpmportunregister_pd().