CVE-2021-47261CWE-706

CVE-2021-47261

High · published May 21, 2024

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

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

IB/mlx5: Fix initializing CQ fragments buffer

The function init_cq_frag_buf() can be called to initialize the current CQ

fragments buffer cq->buf, or the temporary cq->resize_buf that is filled

during CQ resize operation.

However, the offending commit started to use function get_cqe() for

getting the CQEs, the issue with this change is that get_cqe() always

returns CQEs from cq->buf, which leads us to initialize the wrong buffer,

and in case of enlarging the CQ we try to access elements beyond the size

of the current cq->buf and eventually hit a kernel panic.

[exception RIP: init_cq_frag_buf+103]

[ffff9f799ddcbcd8] mlx5_ib_resize_cq at ffffffffc0835d60 [mlx5_ib]

[ffff9f799ddcbdb0] ib_resize_cq at ffffffffc05270df [ib_core]

[ffff9f799ddcbdc0] llt_rdma_setup_qp at ffffffffc0a6a712 [llt]

[ffff9f799ddcbe10] llt_rdma_cc_event_action at ffffffffc0a6b411 [llt]

[ffff9f799ddcbe98] llt_rdma_client_conn_thread at ffffffffc0a6bb75 [llt]

[ffff9f799ddcbec8] kthread at ffffffffa66c5da1

[ffff9f799ddcbf50] ret_from_fork_nospec_begin at ffffffffa6d95ddd

Fix it by getting the needed CQE by calling mlx5_frag_buf_get_wqe() that

takes the correct source buffer as a parameter.

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.00236 · 13.8th percentile
Weakness
CWE-706 · Use of Incorrectly-Resolved Name or Reference
Published
2024-05-21T19:15Z
Affected products (9)
ProductVersionsFixed in
linux/linux_kernel≥ 4.17, < 4.19.1954.19.195
linux/linux_kernel≥ 4.20, < 5.4.1265.4.126
linux/linux_kernel≥ 5.5, < 5.10.445.10.44
linux/linux_kernel≥ 5.11, < 5.12.115.12.11
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
References (10)
EPSS history
Timeline
  • 21 MAY 14:19Z
    IB/mlx5: Fix initializing CQ fragments buffer
    cvelistv5