Answer in brief
CVE-2026-46135 records a Critical severity (CVSS 9.8) vulnerability in nvmet-tcp: fix race between ICReq handling and queue teardown. The current sources do not mark it as known exploited. The current feed maps Linux/Linux (generic), Linux/Linux (generic). Check affected ranges and fixed versions before updating.
Analysis pending evidence review
HOL Guard separates source facts from reviewed analysis. See the methodology.
Answer in brief
CVE-2026-46135 records a Critical severity (CVSS 9.8) vulnerability in nvmet-tcp: fix race between ICReq handling and queue teardown. The current sources do not mark it as known exploited. The current feed maps Linux/Linux (generic), Linux/Linux (generic). Check affected ranges and fixed versions before updating.
Analysis pending evidence review
HOL Guard separates source facts from reviewed analysis. See the methodology.
CVSS is 9.8. The current sources do not mark it as known exploited. Treat this as a source-backed prioritization signal, not a statement about your environment.
Analysis status
Analysis pending evidence review
Factual feed record only; HOL analysis is not approved for indexing. Read the methodology.
The current feed maps Linux/Linux (generic), Linux/Linux (generic). Check affected ranges and fixed versions before updating.
| Package | Affected range | Fixed version |
|---|---|---|
| Linux/Linuxgeneric | >=872d26a391da92ed8f0c0f5cb5fef428067b7f30 <b7dd4d27aa70bd98bb10572310e913668baf6a65 || >=872d26a391da92ed8f0c0f5cb5fef428067b7f30 <9c63cf80895a70eb4fcfcaa725bb1ac9ae76f02b || >=872d26a391da92ed8f0c0f5cb5fef428067b7f30 <6f96dea4819d122737b217ea16660d255abbf8c6 || >=872d26a391da92ed8f0c0f5cb5fef428067b7f30 <5f0b95ef68ab9afba75b20eebf436130f80c161a || >=872d26a391da92ed8f0c0f5cb5fef428067b7f30 <49891c8fe0cb43fbbe480da1cdccfbbaeb820cb3 || >=872d26a391da92ed8f0c0f5cb5fef428067b7f30 <67e1aaf93b495c2f10bc8a5fbba575fbb7f449b6 || >=872d26a391da92ed8f0c0f5cb5fef428067b7f30 <dcfe4d1f7960e7d1c01642318f3aae1a604f8508 || >=872d26a391da92ed8f0c0f5cb5fef428067b7f30 <5293a8882c549fab4a878bc76b0b6c951f980a61 | b7dd4d27aa70bd98bb10572310e913668baf6a65, 9c63cf80895a70eb4fcfcaa725bb1ac9ae76f02b, 6f96dea4819d122737b217ea16660d255abbf8c6, 5f0b95ef68ab9afba75b20eebf436130f80c161a, 49891c8fe0cb43fbbe480da1cdccfbbaeb820cb3, 67e1aaf93b495c2f10bc8a5fbba575fbb7f449b6, dcfe4d1f7960e7d1c01642318f3aae1a604f8508, 5293a8882c549fab4a878bc76b0b6c951f980a61 |
| Linux/Linuxgeneric | 5.0 | Not reported |
Published upstream
May 28, 2026
Evidence: source:cvelist:source_dates:source-dates:recordSource modified
Jul 24, 2026
Evidence: source:cvelist:source_dates:source-dates:recordFirst seen by HOL
Jun 24, 2026
In the Linux kernel, the following vulnerability has been resolved: nvmet-tcp: fix race between ICReq handling and queue teardown nvmet_tcp_handle_icreq() updates queue->state after sending an Initialization Connection Response (ICResp), but it does so without serializing against target-side queue teardown. If an NVMe/TCP host sends an Initialization Connection Request (ICReq) and immediately closes the connection, target-side teardown may start in softirq context before io_work drains the already buffered ICReq. In that case, nvmet_tcp_schedule_release_queue() sets queue->state to NVMET_TCP_Q_DISCONNECTING and drops the queue reference under state_lock. If io_work later processes that ICReq, nvmet_tcp_handle_icreq() can still overwrite the state back to NVMET_TCP_Q_LIVE. That defeats the DISCONNECTING-state guard in nvmet_tcp_schedule_release_queue() and allows a later socket state change to re-enter teardown and issue a second kref_put() on an already released queue. The ICResp send failure path has the same problem. If teardown has already moved the queue to DISCONNECTING, a send error can still overwrite the state with NVMET_TCP_Q_FAILED, again reopening the window for a second teardown path to drop the queue reference. Fix this by serializing both post-send state transitions with state_lock and bailing out if teardown has already started. Use -ESHUTDOWN as an internal sentinel for that bail-out path rather than propagating it as a transport error like -ECONNRESET. Keep nvmet_tcp_socket_error() setting rcv_state to NVMET_TCP_RECV_ERR before honoring that sentinel so receive-side parsing stays quiesced until the existing release path completes.
Quoted source text, attributed separately from HOL analysis.
CVSS is 9.8. The current sources do not mark it as known exploited. Treat this as a source-backed prioritization signal, not a statement about your environment.
Analysis status
Analysis pending evidence review
Factual feed record only; HOL analysis is not approved for indexing. Read the methodology.
The current feed maps Linux/Linux (generic), Linux/Linux (generic). Check affected ranges and fixed versions before updating.
| Package | Affected range | Fixed version |
|---|---|---|
| Linux/Linuxgeneric | >=872d26a391da92ed8f0c0f5cb5fef428067b7f30 <b7dd4d27aa70bd98bb10572310e913668baf6a65 || >=872d26a391da92ed8f0c0f5cb5fef428067b7f30 <9c63cf80895a70eb4fcfcaa725bb1ac9ae76f02b || >=872d26a391da92ed8f0c0f5cb5fef428067b7f30 <6f96dea4819d122737b217ea16660d255abbf8c6 || >=872d26a391da92ed8f0c0f5cb5fef428067b7f30 <5f0b95ef68ab9afba75b20eebf436130f80c161a || >=872d26a391da92ed8f0c0f5cb5fef428067b7f30 <49891c8fe0cb43fbbe480da1cdccfbbaeb820cb3 || >=872d26a391da92ed8f0c0f5cb5fef428067b7f30 <67e1aaf93b495c2f10bc8a5fbba575fbb7f449b6 || >=872d26a391da92ed8f0c0f5cb5fef428067b7f30 <dcfe4d1f7960e7d1c01642318f3aae1a604f8508 || >=872d26a391da92ed8f0c0f5cb5fef428067b7f30 <5293a8882c549fab4a878bc76b0b6c951f980a61 | b7dd4d27aa70bd98bb10572310e913668baf6a65, 9c63cf80895a70eb4fcfcaa725bb1ac9ae76f02b, 6f96dea4819d122737b217ea16660d255abbf8c6, 5f0b95ef68ab9afba75b20eebf436130f80c161a, 49891c8fe0cb43fbbe480da1cdccfbbaeb820cb3, 67e1aaf93b495c2f10bc8a5fbba575fbb7f449b6, dcfe4d1f7960e7d1c01642318f3aae1a604f8508, 5293a8882c549fab4a878bc76b0b6c951f980a61 |
| Linux/Linuxgeneric | 5.0 | Not reported |
Published upstream
May 28, 2026
Evidence: source:cvelist:source_dates:source-dates:recordSource modified
Jul 24, 2026
Evidence: source:cvelist:source_dates:source-dates:recordFirst seen by HOL
Jun 24, 2026
In the Linux kernel, the following vulnerability has been resolved: nvmet-tcp: fix race between ICReq handling and queue teardown nvmet_tcp_handle_icreq() updates queue->state after sending an Initialization Connection Response (ICResp), but it does so without serializing against target-side queue teardown. If an NVMe/TCP host sends an Initialization Connection Request (ICReq) and immediately closes the connection, target-side teardown may start in softirq context before io_work drains the already buffered ICReq. In that case, nvmet_tcp_schedule_release_queue() sets queue->state to NVMET_TCP_Q_DISCONNECTING and drops the queue reference under state_lock. If io_work later processes that ICReq, nvmet_tcp_handle_icreq() can still overwrite the state back to NVMET_TCP_Q_LIVE. That defeats the DISCONNECTING-state guard in nvmet_tcp_schedule_release_queue() and allows a later socket state change to re-enter teardown and issue a second kref_put() on an already released queue. The ICResp send failure path has the same problem. If teardown has already moved the queue to DISCONNECTING, a send error can still overwrite the state with NVMET_TCP_Q_FAILED, again reopening the window for a second teardown path to drop the queue reference. Fix this by serializing both post-send state transitions with state_lock and bailing out if teardown has already started. Use -ESHUTDOWN as an internal sentinel for that bail-out path rather than propagating it as a transport error like -ECONNRESET. Keep nvmet_tcp_socket_error() setting rcv_state to NVMET_TCP_RECV_ERR before honoring that sentinel so receive-side parsing stays quiesced until the existing release path completes.
Quoted source text, attributed separately from HOL analysis.