Skip to main content
Vulnerability Database/CVE-2026-80930

CVE-2026-80930: Linux Kernel TPM Use-After-Free Vulnerability

CVE-2026-80930 is a use-after-free flaw in the Linux kernel TPM I2C Nuvoton driver that causes improper IRQ handling during timeout conditions. This article covers technical details, affected versions, and mitigation.

Published:

CVE-2026-80930 Overview

CVE-2026-80930 is a Linux kernel vulnerability in the tpm_i2c_nuvoton Trusted Platform Module (TPM) driver. The function i2c_nuvoton_wait_for_stat() enables the interrupt request (IRQ) line before waiting for the interrupt handler to report a status change. When the wait times out or is interrupted before the handler runs, the function returns without balancing the prior enable_irq() call. This produces an IRQ enable/disable imbalance in the kernel driver. The upstream fix disables the IRQ on the failed wait path and preserves the interrupted wait's original error code instead of overwriting it with -ETIMEDOUT.

Critical Impact

An unbalanced IRQ enable in the TPM I2C Nuvoton driver can trigger kernel warnings, driver instability, and denial-of-service conditions affecting TPM-dependent security functions such as measured boot and disk encryption.

Affected Products

  • Linux kernel builds that include the tpm_i2c_nuvoton driver
  • Systems using Nuvoton I2C-attached TPM devices
  • Distributions consuming stable kernel branches prior to the referenced fix commits

Discovery Timeline

  • 2026-09-11 - CVE-2026-80930 published to the National Vulnerability Database (NVD)
  • 2026-09-14 - Last updated in NVD database

Technical Details for CVE-2026-80930

Vulnerability Analysis

The defect resides in i2c_nuvoton_wait_for_stat(), a helper that coordinates status polling with the TPM's interrupt handler. The function calls enable_irq() before blocking on the wait primitive. The handler is expected to disable the IRQ once it observes the status change. If the wait times out or is aborted by a signal before the handler executes, control returns to the caller with the IRQ still enabled. Repeated invocations therefore stack IRQ enable references, eventually producing kernel warnings from the generic IRQ subsystem and disrupting subsequent TPM operations.

The patch adds a disable_irq() on the failure path so enable/disable calls remain balanced. It also stops overwriting an interrupted wait's error code with -ETIMEDOUT, letting callers distinguish signal interruption from an actual timeout.

Root Cause

The root cause is improper resource lifecycle management on error paths within a kernel driver. The helper acquires an IRQ enable reference at entry but only releases it on the success path handled by the interrupt handler, leaving timeout and signal-interruption paths unbalanced.

Attack Vector

The issue is a local reliability and denial-of-service condition rather than a remote code execution flaw. Triggering the imbalance requires conditions where the TPM fails to respond within the driver timeout or where the wait is interrupted, both reachable by workloads that repeatedly exercise the TPM under contention.

No verified exploitation code is available. Technical details are documented in the upstream kernel commits referenced by the CVE, including Kernel Git Commit 007c9e6 and Kernel Git Commit 73e89fa.

Detection Methods for CVE-2026-80930

Indicators of Compromise

  • Kernel log warnings referencing Unbalanced enable for IRQ originating from the tpm_i2c_nuvoton driver
  • TPM command failures or timeouts logged by userspace consumers such as tpm2-abrmd or tcsd
  • Boot-time or runtime measured-boot and integrity-measurement architecture (IMA) errors on affected hosts

Detection Strategies

  • Inventory running kernel versions across the fleet and correlate against the fixed commits listed in the NVD references
  • Alert on kernel ring buffer messages that reference IRQ imbalance events on hosts with Nuvoton TPM hardware
  • Use configuration management to identify systems loading the tpm_i2c_nuvoton module

Monitoring Recommendations

  • Forward dmesg and journalctl -k output to a central log platform and build detections for IRQ subsystem warnings
  • Monitor TPM service health checks and disk encryption unlock failures that may indicate driver instability
  • Track kernel package versions through endpoint telemetry to confirm patched builds are deployed

How to Mitigate CVE-2026-80930

Immediate Actions Required

  • Apply the vendor-provided kernel update that includes the upstream fix for tpm_i2c_nuvoton
  • Reboot affected systems after patching so the corrected module is loaded
  • Prioritize hosts using Nuvoton I2C TPMs for security functions such as full-disk encryption or measured boot

Patch Information

The fix is delivered through multiple stable kernel commits, including 007c9e6, 07c2544, 2c9147b, 705c4ed, 73e89fa, aee2296, b0dc3f1, and cde2d92. Consume the patched kernel package from your distribution as it becomes available.

Workarounds

  • No supported workaround exists; unloading the tpm_i2c_nuvoton module disables TPM functionality and is not recommended for systems relying on TPM-backed security
  • Reduce contention on the TPM by throttling workloads that issue frequent TPM operations until the patch is applied

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.