stratix10-svc firmware driver: an allocation-path leak and a failed-lookup path that can corrupt the driver’s global allocation list. The practical action is limited but important: administrators running Linux on Intel Stratix 10 or Agilex SoC FPGA hardware should plan to take a kernel containing the fix, while ordinary Windows PCs and standard WSL installations are not in scope.The National Vulnerability Database entry was published on August 11, 2026, but NVD was returning a 502 Bad Gateway error when checked, leaving its CVSS score, CWE classification, affected-version field, and reference set unavailable for independent verification. The underlying fix itself is well documented in the Linux kernel mailing-list record and has since landed in Linus Torvalds’ tree through the
char-misc-7.2-rc5pull request.
What the CVE label risks obscuring is that this is not a flaw in an Intel FPGA bitstream, Windows firmware, or a broadly deployed PC driver. It is in a narrowly targeted Linux kernel component,
CONFIG_INTEL_STRATIX10_SERVICE, used on ARM64 Intel SoCFPGA systems to broker privileged requests from in-kernel clients to the secure monitor at ARM Exception Level 3. Kernel documentation identifies FPGA programming as one such secure feature.
The bad path deletes the list head, not an allocation
Tze Yee Ng’s patch description identifies the more consequential defect: if
stratix10_svc_free_memory()cannot find the allocation matching the supplied address, the old code executes
list_del(&svc_data_mem).
svc_data_memis the list head, not the per-allocation list node.
That distinction is the heart of CVE-2026-68183. A free of an unrecognized buffer should ideally leave the list unchanged and return. Instead, the driver detached its own list head. Subsequent traversal or mutation of that global list could then operate on corrupted pointers, producing unpredictable behavior ranging from failed firmware-service requests to a kernel fault.
The final patch removes that erroneous operation outright. If the function does not locate a matching
pmemallocation record, it now simply reaches the end of the function without modifying the allocation list.
This was not accepted unexamined. The first posted version tried to add an early return when either the service channel or buffer address was null. Greg Kroah-Hartman flagged an asymmetric case: a valid allocation address paired with a null channel could silently leak memory. The patch author initially suggested a
WARN_ON_ONCE()diagnostic, but Kroah-Hartman rejected that too, noting that a new warning for a condition that can occur is not a solution—especially where it could turn a recoverable driver problem into a system-disrupting event.
Version 2 removed the null-argument early return. Version 3 retained that correction with no functional code changes. This review history matters because the merged change is narrower than the first description might suggest: it fixes the leak and the list corruption, but it does not attempt to redefine or sanitize invalid callers of the internal API.
The leak came from mismatched allocation lifetimes
The other half of the fix corrects how the driver tracks memory obtained from its reserved shared-memory pool. Before the patch,
stratix10_svc_allocate_memory()allocated its bookkeeping record with
devm_kzalloc(), then added that record to
svc_data_mem. The record was associated with a single buffer allocation, but device-managed memory is normally retained until the underlying device is removed.
The free routine removed a successfully found record from the linked list but did not free the record itself. Repeated allocate/free activity could therefore accumulate metadata allocations for the life of the service device. A second leak occurred if
gen_pool_alloc()failed after the bookkeeping record had been allocated: the function returned an out-of-memory error without releasing the record it had just created.
The correction changes the bookkeeping allocation to ordinary kernel allocation and explicitly releases it in both relevant paths:
- It frees the
pmemrecord immediately if the shared-memory pool cannot satisfy the request. - It frees the record when the matching service buffer is returned and its list node is removed.
This is a small code change—six added lines and four removed lines in the final posting—but it repairs the ownership model. The record now lives exactly as long as the service buffer it describes, rather than until the entire
stratix10-svcdevice disappears.
The vulnerability’s title says “memory leaks and list corruption bugs,” plural, and that is accurate. They are related only by their location in the same allocation bookkeeping code. The leak is a resource-exhaustion and long-uptime reliability issue; deleting the list head is a structural memory-management defect with a more immediate risk of corrupted kernel state.
The affected hardware is specialized ARM64 SoCFPGA equipment
The Stratix 10 Service Layer is a Linux firmware interface for Intel SoC FPGA platforms, including device-tree systems using
intel,stratix10-svcand, in newer generations,
intel,agilex-svc. Its Kconfig dependency requires Intel SoCFPGA architecture support, ARM64, and ARM Secure Monitor Call Convention support.
In normal deployments, this driver is part of the board-support stack rather than something an administrator installs on a general-purpose server. It receives requests from kernel-side clients that manage FPGA configuration, remote system updates, mailbox operations, and related secure services. The Linux kernel’s own documentation says those requests are queued and handed to the secure monitor one at a time through ARM SMCCC calls.
That has two implications for severity assessment:
First, the vulnerable code is not present on conventional x86 Windows desktops or Windows Server machines, even where Intel FPGA tools are installed. The affected component is a Linux ARM64 platform driver, not the Windows FPGA toolchain, a PCIe FPGA driver, or UEFI firmware.
Second, no public record reviewed for this article identifies a direct unprivileged user-space trigger. The allocation and free functions are exported for other kernel drivers, and the mailing-list discussion concerns invalid internal API usage rather than hostile user input. That does not make the defect harmless—kernel client paths can be reached through higher-level device operations—but it does mean the present evidence supports treating it as a targeted embedded-Linux maintenance issue, not a mass-exploitation event.
For Windows users, WSL deserves a precise answer. Microsoft’s WSL2 kernel source is Linux-based, but standard WSL runs a virtualized Linux environment on PC hardware; it does not expose an Intel Stratix 10 SoCFPGA secure monitor or boot the platform-specific Stratix service driver. The driver’s ARM64 SoCFPGA dependencies make a normal WSL installation outside the affected configuration.
Upstream has the repair; distribution coverage is still the open item
The final version of the patch carries a stable-kernel request for Linux 5.0 and later. That is a useful indicator of upstream intent, not proof that every maintained distribution kernel has already received the patch.
The original Stratix 10 Service Layer driver was introduced in the Linux 5.0 era, and the configuration database records the driver across Linux 5.x, 6.x, 7.0, 7.1, and the current 7.2 release-candidate branch. The fix has reached the upstream development tree as part of the 7.2-rc5 pull. Greg Kroah-Hartman’s pull-request description said the Stratix10 service-driver fixes had spent more than a week in linux-next without reported issues.
That is upstream integration, not a completed stable rollout. A downstream vendor may backport the patch into an older kernel, fold it into a regular kernel update, or not yet have published an advisory. No distribution-specific advisory or fixed package version for CVE-2026-68183 was available in the records reviewed, and NVD’s outage prevents checking whether it has listed vendor package status.
Administrators responsible for affected boards should therefore verify the source rather than relying on the CVE number alone. A fixed kernel contains the removal of the failed-lookup
list_delon the allocation-list head, converts the bookkeeping record from device-managed allocation to ordinary allocation, and calls
kfree()on the pool-allocation failure and successful free paths.
The immediate operational consequence is straightforward: update the kernel on Stratix 10 and Agilex Linux appliances once the board vendor or distribution ships this change, particularly where FPGA reconfiguration, remote system update, or service-mailbox activity is frequent. For everyone else—including Windows endpoints and ordinary WSL machines—CVE-2026-68183 requires awareness, not emergency remediation.