CVE-2023-53463
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
01/10/2025
Last modified:
16/01/2026
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
ibmvnic: Do not reset dql stats on NON_FATAL err<br />
<br />
All ibmvnic resets, make a call to netdev_tx_reset_queue() when<br />
re-opening the device. netdev_tx_reset_queue() resets the num_queued<br />
and num_completed byte counters. These stats are used in Byte Queue<br />
Limit (BQL) algorithms. The difference between these two stats tracks<br />
the number of bytes currently sitting on the physical NIC. ibmvnic<br />
increases the number of queued bytes though calls to<br />
netdev_tx_sent_queue() in the drivers xmit function. When, VIOS reports<br />
that it is done transmitting bytes, the ibmvnic device increases the<br />
number of completed bytes through calls to netdev_tx_completed_queue().<br />
It is important to note that the driver batches its transmit calls and<br />
num_queued is increased every time that an skb is added to the next<br />
batch, not necessarily when the batch is sent to VIOS for transmission.<br />
<br />
Unlike other reset types, a NON FATAL reset will not flush the sub crq<br />
tx buffers. Therefore, it is possible for the batched skb array to be<br />
partially full. So if there is call to netdev_tx_reset_queue() when<br />
re-opening the device, the value of num_queued (0) would not account<br />
for the skb&#39;s that are currently batched. Eventually, when the batch<br />
is sent to VIOS, the call to netdev_tx_completed_queue() would increase<br />
num_completed to a value greater than the num_queued. This causes a<br />
BUG_ON crash:<br />
<br />
ibmvnic 30000002: Firmware reports error, cause: adapter problem.<br />
Starting recovery...<br />
ibmvnic 30000002: tx error 600<br />
ibmvnic 30000002: tx error 600<br />
ibmvnic 30000002: tx error 600<br />
ibmvnic 30000002: tx error 600<br />
------------[ cut here ]------------<br />
kernel BUG at lib/dynamic_queue_limits.c:27!<br />
Oops: Exception in kernel mode, sig: 5<br />
[....]<br />
NIP dql_completed+0x28/0x1c0<br />
LR ibmvnic_complete_tx.isra.0+0x23c/0x420 [ibmvnic]<br />
Call Trace:<br />
ibmvnic_complete_tx.isra.0+0x3f8/0x420 [ibmvnic] (unreliable)<br />
ibmvnic_interrupt_tx+0x40/0x70 [ibmvnic]<br />
__handle_irq_event_percpu+0x98/0x270<br />
---[ end trace ]---<br />
<br />
Therefore, do not reset the dql stats when performing a NON_FATAL reset.
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:*:*:*:*:*:*:*:* | 5.11 (including) | 5.15.121 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.16 (including) | 6.1.39 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.2 (including) | 6.4.4 (excluding) |
To consult the complete list of CPE names with products and versions, see this page



