CVE-2023-52611
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
18/03/2024
Last modified:
10/03/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
wifi: rtw88: sdio: Honor the host max_req_size in the RX path<br />
<br />
Lukas reports skb_over_panic errors on his Banana Pi BPI-CM4 which comes<br />
with an Amlogic A311D (G12B) SoC and a RTL8822CS SDIO wifi/Bluetooth<br />
combo card. The error he observed is identical to what has been fixed<br />
in commit e967229ead0e ("wifi: rtw88: sdio: Check the HISR RX_REQUEST<br />
bit in rtw_sdio_rx_isr()") but that commit didn&#39;t fix Lukas&#39; problem.<br />
<br />
Lukas found that disabling or limiting RX aggregation works around the<br />
problem for some time (but does not fully fix it). In the following<br />
discussion a few key topics have been discussed which have an impact on<br />
this problem:<br />
- The Amlogic A311D (G12B) SoC has a hardware bug in the SDIO controller<br />
which prevents DMA transfers. Instead all transfers need to go through<br />
the controller SRAM which limits transfers to 1536 bytes<br />
- rtw88 chips don&#39;t split incoming (RX) packets, so if a big packet is<br />
received this is forwarded to the host in it&#39;s original form<br />
- rtw88 chips can do RX aggregation, meaning more multiple incoming<br />
packets can be pulled by the host from the card with one MMC/SDIO<br />
transfer. This Depends on settings in the REG_RXDMA_AGG_PG_TH<br />
register (BIT_RXDMA_AGG_PG_TH limits the number of packets that will<br />
be aggregated, BIT_DMA_AGG_TO_V1 configures a timeout for aggregation<br />
and BIT_EN_PRE_CALC makes the chip honor the limits more effectively)<br />
<br />
Use multiple consecutive reads in rtw_sdio_read_port() and limit the<br />
number of bytes which are copied by the host from the card in one<br />
MMC/SDIO transfer. This allows receiving a buffer that&#39;s larger than<br />
the hosts max_req_size (number of bytes which can be transferred in<br />
one MMC/SDIO transfer). As a result of this the skb_over_panic error<br />
is gone as the rtw88 driver is now able to receive more than 1536 bytes<br />
from the card (either because the incoming packet is larger than that<br />
or because multiple packets have been aggregated).<br />
<br />
In case of an receive errors (-EILSEQ has been observed by Lukas) we<br />
need to drain the remaining data from the card&#39;s buffer, otherwise the<br />
card will return corrupt data for the next rtw_sdio_read_port() call.
Impact
Base Score 3.x
5.50
Severity 3.x
MEDIUM
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.4 (including) | 6.6.14 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.7 (including) | 6.7.2 (excluding) |
To consult the complete list of CPE names with products and versions, see this page
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/00384f565a91c08c4bedae167f749b093d10e3fe
- https://git.kernel.org/stable/c/0e9ffff72a0674cd6656314dbd99cdd2123a3030
- https://git.kernel.org/stable/c/5b5ddf21b978ec315cab9d9e7e6ac7374791a8c7
- https://git.kernel.org/stable/c/00384f565a91c08c4bedae167f749b093d10e3fe
- https://git.kernel.org/stable/c/0e9ffff72a0674cd6656314dbd99cdd2123a3030
- https://git.kernel.org/stable/c/5b5ddf21b978ec315cab9d9e7e6ac7374791a8c7



