CVE-2024-26932

usb: typec: tcpm: fix double-free issue in tcpm_port_unregister_pd()

High · published May 1, 2024

CVSS v3.1
7.8
EPSS
0%
Percentile
11.5
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

usb: typec: tcpm: fix double-free issue in tcpm_port_unregister_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 pd_capabilities_release() and the second time

is explicitly kfreed by tcpm_port_unregister_pd().

[ 3.988059] BUG: KASAN: double-free in tcpm_port_unregister_pd+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: events_unbound deferred_probe_work_func

[ 4.023456] Call trace:

[ 4.025920] dump_backtrace+0x94/0xec

[ 4.029629] show_stack+0x18/0x24

[ 4.032974] dump_stack_lvl+0x78/0x90

[ 4.036675] print_report+0xfc/0x5c0

[ 4.040289] kasan_report_invalid_free+0xa0/0xc0

[ 4.044937] __kasan_slab_free+0x124/0x154

[ 4.049072] kfree+0xb4/0x1e8

[ 4.052069] tcpm_port_unregister_pd+0x1a4/0x3dc

[ 4.056725] tcpm_register_port+0x1dd0/0x2558

[ 4.061121] tcpci_register_port+0x420/0x71c

[ 4.065430] tcpci_probe+0x118/0x2e0

To fix the issue, this will remove kree() from tcpm_port_unregister_pd().

The record
Technical detail
CVSS v3.1
7.8 · HIGH
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00216 · 11.5th percentile
Published
2024-05-01T05:17Z
EPSS history
Timeline
  • 01 MAY 05:17Z
    usb: typec: tcpm: fix double-free issue in tcpm_port_unregister_pd()
    cvelistv5