Description
In the Linux kernel, the following vulnerability has been resolved: RDMA/mana_ib: Disable RX steering on RSS QP destroy When an RSS QP is destroyed (e.g. DPDK exit), mana_ib_destroy_qp_rss() destroys the RX WQ objects but does not disable vPort RX steering in firmware. This leaves stale steering configuration that still points to the destroyed RX objects. If traffic continues to arrive (e.g. peer VM is still transmitting) and the VF interface is subsequently brought up (mana_open), the firmware may deliver completions using stale CQ IDs from the old RX objects. These CQ IDs can be reused by the ethernet driver for new TX CQs, causing RX completions to land on TX CQs: WARNING: mana_poll_tx_cq+0x1b8/0x220 [mana] (is_sq == false) WARNING: mana_gd_process_eq_events+0x209/0x290 (cq_table lookup fails) Fix this by disabling vPort RX steering before destroying RX WQ objects. Note that mana_fence_rqs() cannot be used here because the fence completion is delivered on the CQ, which is polled by user-mode (e.g. DPDK) and not visible to the kernel driver. Refactor the disable logic into a shared mana_disable_vport_rx() in mana_en, exported for use by mana_ib, replacing the duplicate code. The ethernet driver's mana_dealloc_queues() is also updated to call this common function.
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
0266a177631d4c6b963b5b12dd986a8c5abdbf06 to < 6a2d6273b6c3581ce7b90ce17b5cbb4efd19438faffected0266a177631d4c6b963b5b12dd986a8c5abdbf06 to < f1ccc4d500a0b87a5599343fc2f798048836e184affected0266a177631d4c6b963b5b12dd986a8c5abdbf06 to < 8ba804869382ce307f2a15f5f6f2adfd791f41dcaffected0266a177631d4c6b963b5b12dd986a8c5abdbf06 to < 3be5ed233de03b00ae868cfc06e95331d8d9007caffected0266a177631d4c6b963b5b12dd986a8c5abdbf06 to < dbeb256e8dd87233d891b170c0b32a6466467036affected
Linux Linux
Default version status: affected
6.2affected0 to < 6.2unaffected6.6.140 to ≤ 6.6.*unaffected6.12.86 to ≤ 6.12.*unaffected6.18.27 to ≤ 6.18.*unaffected7.0.4 to ≤ 7.0.*unaffected7.1 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/6a2d6273b6c3581ce7b90ce17b5cbb4efd19438f ↗
- https://git.kernel.org/stable/c/f1ccc4d500a0b87a5599343fc2f798048836e184 ↗
- https://git.kernel.org/stable/c/8ba804869382ce307f2a15f5f6f2adfd791f41dc ↗
- https://git.kernel.org/stable/c/3be5ed233de03b00ae868cfc06e95331d8d9007c ↗
- https://git.kernel.org/stable/c/dbeb256e8dd87233d891b170c0b32a6466467036 ↗