Database/Kernel, userspace & hypervisor
Linux kernel ice: relaxed Tx doorbell write on arm64 trips a BUG_ON in dql_completed and panics the host
Impact
The ice transmit path rings the hardware doorbell with writel_relaxed(), which on arm64 does not order the preceding update of dql->num_queued against the MMIO write. The NIC can start and finish transmitting before the queue accounting is globally visible, dql_completed() then sees more bytes completed than queued, and the kernel hits BUG_ON at lib/dynamic_queue_limits.c:99 - an immediate panic inside ice_napi_poll. The reporter reproduced this reliably on an arm64 machine with an Intel E810-XXV under sustained network load, and swapping writel() back in eliminated it. For operators this is an availability bug on arm64 GPU nodes (Grace, Altra, Graviton-class hosts) fitted with E810 NICs: a node that panics under heavy traffic takes its jobs with it, and a node that panics repeatedly under normal load is effectively out of the fleet. x86 hosts are not affected in practice because writel_relaxed there already carries the needed ordering. The regression was introduced by commit ccde82e90946, which changed the doorbell from writel() to writel_relaxed().
Who can reach it
No authentication and no attacker needed in the usual sense - it is a race that sustained Tx load triggers on its own. Anyone who can drive heavy outbound traffic through an affected arm64 node (a tenant workload, an all-reduce, a data loader) can make it more likely. Only arm64 hosts running the ice driver on E8xx-series NICs are exposed.
What to do
Take the stable kernel carrying the writel() restoration (three stable branches fixed) and reboot each affected arm64 node. There is no runtime workaround that keeps the fast path intact; reducing Tx load only lowers the probability. x86 fleets can deprioritize this entirely.
References
Related entries
- Linux kernel libiscsi: a malicious iSCSI target crashes the initiator with an unsolicited NOP-InCVE-2026-99152 · Linux kernel libiscsi (__iscsi_complete_pdu management-response task lookup)High
- OpenSSL: ChaCha20-Poly1305 accepts 16-byte nonces, silently ignoring leading bytesCVE-2019-1543 · OpenSSL (ChaCha20-Poly1305 variable nonce length)High
- Linux kernel (overlayfs, Ubuntu patch): OverlayFS file-capability privilege escalationCVE-2021-3493 · Linux kernel (overlayfs, Ubuntu patch)High
- OpenSSL: X.400 address type confusion in X.509 GeneralNameCVE-2023-0286 · OpenSSLHigh
- Linux kernel (net/sched tcindex): Use-after-free in the tcindex traffic-control filter - local rootCVE-2023-1829 · Linux kernel (net/sched tcindex)High
- OpenSSL: TLS/DTLS clients using raw public keys may not fail the handshake when the server is unauthenticatedCVE-2024-12797 · OpenSSL (RFC7250 raw public key server authentication)High
This entry is curated: imported from vendor advisories with machine assistance, not yet individually verified. Confirm against your vendor's advisory before acting, and report anything wrong.