CVE-2026-31573
Description
In the Linux kernel, the following vulnerability has been resolved:
media: verisilicon: Fix kernel panic due to __initconst misuse
Fix a kernel panic when probing the driver as a module:
Unable to handle kernel paging request at virtual address ffffd9c18eb05000 of_find_matching_node_and_match+0x5c/0x1a0 hantro_probe+0x2f4/0x7d0 [hantro_vpu]
The imx8mq_vpu_shared_resources array is referenced by variant structures through their shared_devices field. When built as a module, __initconst causes this data to be freed after module init, but it's later accessed during probe, causing a page fault.
The imx8mq_vpu_shared_resources is referenced from non-init code, so keeping __initconst or __initconst_or_module here is wrong.
Drop the __initconst annotation and let it live in the normal .rodata section.
A bug of __initconst called from regular non-init probe code leading to bugs during probe deferrals or during unbind-bind cycles.
AI Insight
LLM-synthesized narrative grounded in this CVE's description and references.
In the Linux kernel, misuse of __initconst in the hantro_vpu driver causes a kernel panic when built as a module due to accessing freed init data during probe.
The vulnerability resides in the Verisilicon Hantro VPU driver (hantro_vpu) in the Linux kernel. The imx8mq_vpu_shared_resources array was annotated with __initconst, which causes the data to be placed in a section that is freed after module initialization. However, this array is referenced by variant structures via the shared_devices field, which is accessed during non-init probe code. When the driver is built as a module, the freed memory is later accessed, resulting in a kernel panic due to a page fault [1][2].
Exploitation occurs during normal driver probe operations, such as initial module loading, probe deferrals, or unbind-bind cycles. No special privileges are required beyond the ability to load the affected kernel module. The panic manifests as an "Unable to handle kernel paging request" at the virtual address of the freed array, typically triggered when the system boots or when the VPU hardware is discovered.
The impact is a denial of service via kernel panic. While the immediate effect is system crash, the use-after-free condition could potentially be leveraged for privilege escalation in certain scenarios, but the primary risk is system instability. The vulnerability affects systems using the Hantro VPU driver, commonly found in embedded platforms like i.MX8MQ.
The fix is to remove the __initconst annotation so that the array resides in the normal .rodata section and is not freed after init. The patch has been applied to the Linux kernel stable branches [1][2]. Users should update to a kernel version containing this commit to prevent the panic.
AI Insight generated on May 18, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.
Affected products
3Patches
0No patches discovered yet.
Vulnerability mechanics
AI mechanics synthesis has not run for this CVE yet.
References
2News mentions
0No linked articles in our index yet.