CVE-2026-31498

Bluetooth: L2CAP: Fix ERTM re-init and zero pdu_len infinite loop

published April 22, 2026

CVSS
—
EPSS
0%
Percentile
5.1
In the wild
Unconfirmed
What it is

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

Bluetooth: L2CAP: Fix ERTM re-init and zero pdu_len infinite loop

l2cap_config_req() processes CONFIG_REQ for channels in BT_CONNECTED

state to support L2CAP reconfiguration (e.g. MTU changes). However,

since both CONF_INPUT_DONE and CONF_OUTPUT_DONE are already set from

the initial configuration, the reconfiguration path falls through to

l2cap_ertm_init(), which re-initializes tx_q, srej_q, srej_list, and

retrans_list without freeing the previous allocations and sets

chan->sdu to NULL without freeing the existing skb. This leaks all

previously allocated ERTM resources.

Additionally, l2cap_parse_conf_req() does not validate the minimum

value of remote_mps derived from the RFC max_pdu_size option. A zero

value propagates to l2cap_segment_sdu() where pdu_len becomes zero,

causing the while loop to never terminate since len is never

decremented, exhausting all available memory.

Fix the double-init by skipping l2cap_ertm_init() and

l2cap_chan_ready() when the channel is already in BT_CONNECTED state,

while still allowing the reconfiguration parameters to be updated

through l2cap_parse_conf_req(). Also add a pdu_len zero check in

l2cap_segment_sdu() as a safeguard.

The record
Technical detail
CVSS
Not scored
CVSS v4.0
Not supplied
EPSS
0.00162 · 5.1th percentile
Published
2026-04-22T13:54Z
EPSS history
Timeline
  • 22 APR 13:54Z
    Bluetooth: L2CAP: Fix ERTM re-init and zero pdu_len infinite loop
    cvelistv5