Linux Kernel RoCE Driver NULL Pointer Dereference Vulnerability

Vulnerability

A vulnerability in the Linux kernel's RoCE (RDMA over Converged Ethernet) driver can lead to a NULL pointer dereference, causing a crash. This issue arises from a double invocation of the driver's suspend method, which is not properly synchronized. The vulnerability affects the bnxt_en component of the Linux kernel.

Impact

Exploitation of this vulnerability causes a kernel panic due to a NULL pointer dereference, leading to a system crash.

Reproduction

The vulnerability can be reproduced by invoking the bnxt_ulp_stop() and bnxt_ulp_start() methods in pairs, which is the expected behavior. However, after a specific commit, the new bnxt_ulp_restart() method can be called after bnxt_ulp_stop(), potentially leading to the aux driver's suspend() method being called twice. The second call dereferences a NULL pointer, causing a crash.

Remediation

Check the BNXT_EN_FLAG_ULP_STOPPED flag before proceeding with the bnxt_ulp_stop() and bnxt_ulp_start() methods. This will ensure that the methods are not invoked twice, preserving the original symmetrical call pattern. After updating the bnxt_ulp_start() method, clear the BNXT_EN_FLAG_ULP_STOPPED flag to avoid race conditions.

Added: Jul 4, 2025, 3:55 PM
Updated: Jul 4, 2025, 3:55 PM

Vulnerability Rating

Custom Algorithm
spread
9.0
impact
2.5
exploitability
5.7
remediation
0.0
relevance
0.2
threat
4.8
urgency
2.9
incentive
1.7

Our algorithm analyzes dozens of metrics to generate these 8 key vulnerability categories, which are then combined to calculate the overall risk score.