---
id: "CVE-2026-98615"
kind: "vulnerability"
aliases: ["CVE-2026-98615"]
title: "Linux kernel: fbnic firmware mailbox flush can leave requests stuck"
severity: "unknown"
cvss: null
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["fbnic", "linux-kernel", "package", "self-hosted"]
not_affected_if: ["no-fbnic-hardware"]
published_at: "2026-10-18T16:17:14+00:00"
first_seen_at: "2026-10-23T21:57:16+00:00"
updated_at: "2026-10-25T05:21:21+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-98615", "first_seen_at": "2026-10-23T21:57:16+00:00"}]
---

# Linux kernel: fbnic firmware mailbox flush can leave requests stuck

The fbnic network driver in the Linux kernel did not fully drain staged firmware mailbox writes when tearing down the mailbox Rx ring, so the firmware flush could never complete. The sources describe a stall in the write path; they do not describe code execution or data exposure.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Run `uname -r` and check whether the running kernel includes the fbnic AW_FLUSH_MODE fix (unknown: the sources do not give the fixed version)
- Check whether the host uses Meta fbnic network hardware (unknown: the sources do not say how to identify it)

## Fix

- Update the Linux kernel to a release that includes the upstream fbnic AW_FLUSH_MODE commit (unknown: the sources do not list the fixed version)

## Timeline

- 2026-10-23T21:57:16+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-98615

## From the sources

In the Linux kernel, the following vulnerability has been resolved:

eth: fbnic: Set AW_FLUSH_MODE alongside AW_FLUSH when flushing the mailbox

When tearing down the FW mailbox Rx ring, fbnic_mbx_reset_desc_ring()
writes AW_CFG with FLUSH set and everything else, BME included, cleared.
Clearing BME halts the device's writes to the host but leaves the staged
requests parked in the PUL write pipeline rather than draining them, so
on the write path FLUSH alone never terminates the outstanding requests
and the flush the firmware waits on never completes.

Add the FLUSH_MODE definition and set both bits so the staged writes
drain out of the pipeline on their own. BME stays cleared, so nothing
lands on the host; it is restored later in fbnic_mbx_init_desc_ring()
when the ring is rebuilt, once the outstanding writes are gone.

The read path is unaffected. AR_CFG has no equivalent mode bit and
AR_FLUSH terminates the outstanding reads by itself, so it is left as
is.

Both writes remain plain stores rather than read-modify-writes. That is
deliberate: the matching write in fbnic_mbx_init_desc_ring() restores
BME and the TLP attributes, and clears both flush bits as a side effect.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
