Description
In the Linux kernel, the following vulnerability has been resolved: net: enetc: fix the deadlock of enetc_mdio_lock After applying the workaround for err050089, the LS1028A platform experiences RCU stalls on RT kernel. This issue is caused by the recursive acquisition of the read lock enetc_mdio_lock. Here list some of the call stacks identified under the enetc_poll path that may lead to a deadlock: enetc_poll -> enetc_lock_mdio -> enetc_clean_rx_ring OR napi_complete_done -> napi_gro_receive -> enetc_start_xmit -> enetc_lock_mdio -> enetc_map_tx_buffs -> enetc_unlock_mdio -> enetc_unlock_mdio After enetc_poll acquires the read lock, a higher-priority writer attempts to acquire the lock, causing preemption. The writer detects that a read lock is already held and is scheduled out. However, readers under enetc_poll cannot acquire the read lock again because a writer is already waiting, leading to a thread hang. Currently, the deadlock is avoided by adjusting enetc_lock_mdio to prevent recursive lock acquisition.
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
6d36ecdbc4410e61a0e02adc5d3abeee22a8ffd3 to < a649161526736f48bcc592e3a412e5bcd7dd9e24affected6d36ecdbc4410e61a0e02adc5d3abeee22a8ffd3 to < 2781ca82ce8cad263d80b617addb727e6a84c9e5affected6d36ecdbc4410e61a0e02adc5d3abeee22a8ffd3 to < 1f92f5bd057a4fad9dab6af17963cdd21e5da6edaffected6d36ecdbc4410e61a0e02adc5d3abeee22a8ffd3 to < 2e55a49dc3b2a6b23329e4fbbd8a5feb20e220aaaffected6d36ecdbc4410e61a0e02adc5d3abeee22a8ffd3 to < 50bd33f6b3922a6b760aa30d409cae891cec8fb5affectedbf9c564716a13dde6a990d3b02c27cd6e39608bfaffectedff966263f5f9fdf9740f03fed0762ce73c230a6aaffected5.10.24 to < 5.11affected5.11.7 to < 5.12affected
Linux Linux
Default version status: affected
5.12affected0 to < 5.12unaffected6.1.175 to ≤ 6.1.*unaffected6.6.115 to ≤ 6.6.*unaffected6.12.56 to ≤ 6.12.*unaffected6.17.6 to ≤ 6.17.*unaffected6.18 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/a649161526736f48bcc592e3a412e5bcd7dd9e24 ↗
- https://git.kernel.org/stable/c/2781ca82ce8cad263d80b617addb727e6a84c9e5 ↗
- https://git.kernel.org/stable/c/1f92f5bd057a4fad9dab6af17963cdd21e5da6ed ↗
- https://git.kernel.org/stable/c/2e55a49dc3b2a6b23329e4fbbd8a5feb20e220aa ↗
- https://git.kernel.org/stable/c/50bd33f6b3922a6b760aa30d409cae891cec8fb5 ↗