Description
In the Linux kernel, the following vulnerability has been resolved: RDMA/core: Fix potential use after free in ib_destroy_cq_user() When accessing a CQ via the netlink path the only synchronization mechanism for the said CQ is rdma_restrack_get(). Currently, rdma_restrack_del() is invoked at the end of ib_destroy_cq_user(), which is too late, since by that point vendor-specific resources associated with the CQ might already be freed. This can leave a short window where the CQ remains accessible through restrack, leading to a potential use-after-free. Fix this by moving the rdma_restrack_begin_del() call to the start of ib_destroy_cq_user(), ensuring that the CQ is removed from restrack before its internal resources are released. This guarantees that no new users hold references to a CQ that is in the process of destruction. In addition, this change preserves the intended inverted order between create and destroy routines: resources are added to restrack at the end of successful creation, and hence shall be removed from the restrack first thing during the destruction flow, which keeps the lifecycle management consistent and predictable.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
08f294a1524bc3211a28091daa6c7513828c7d33 to < 42f7a0c7a94003059540cce448acabfa62ad119daffected08f294a1524bc3211a28091daa6c7513828c7d33 to < 253c2ed71a532c70fa0e64317ceb02bb1a50c84caffected08f294a1524bc3211a28091daa6c7513828c7d33 to < b85a148731eceffacb6a030950187d785175607faffected08f294a1524bc3211a28091daa6c7513828c7d33 to < 197c262dbf94c0f7ab7ac54b66f892ce9f343232affected08f294a1524bc3211a28091daa6c7513828c7d33 to < 8a72a6aad84b3928dbb5e564bff1f56a7ec222aeaffected08f294a1524bc3211a28091daa6c7513828c7d33 to < 3481bec4dfc4aee24ffea5a547ee95b70b67d9d5affected
Linux Linux
Default version status: affected
4.16affected0 to < 4.16unaffected6.1.188 to ≤ 6.1.*unaffected6.6.157 to ≤ 6.6.*unaffected6.12.110 to ≤ 6.12.*unaffected6.18.52 to ≤ 6.18.*unaffected7.2.6 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/42f7a0c7a94003059540cce448acabfa62ad119d ↗
- https://git.kernel.org/stable/c/253c2ed71a532c70fa0e64317ceb02bb1a50c84c ↗
- https://git.kernel.org/stable/c/b85a148731eceffacb6a030950187d785175607f ↗
- https://git.kernel.org/stable/c/197c262dbf94c0f7ab7ac54b66f892ce9f343232 ↗
- https://git.kernel.org/stable/c/8a72a6aad84b3928dbb5e564bff1f56a7ec222ae ↗
- https://git.kernel.org/stable/c/3481bec4dfc4aee24ffea5a547ee95b70b67d9d5 ↗