CVE-2026-93256: arm64: hibernate: mask DAIF before restoring hibernated kernel
In the Linux kernel, the following vulnerability has been resolved:
arm64: hibernate: mask DAIF before restoring hibernated kernel
The arm64 hibernate code manages the exception masking in an unsound way, leading to potential crashes and/or warnings during resume.
When a hibernation image is saved in swsusparchsuspend(), all DAIF exceptions are masked (by virtue of localdaifsave()), and the suspended image is saved assuming that all DAIF exceptions will remain masked when the image is restored.
When a hibernation image is resumed by swsusparchresume(), only interrupts are masked (by virtue of localirqdisable() in resumetargetkernel()). When pseudo-NMI is enabled the DAIF.IF bits will be clear, and regardless of pseudo-NMI the DAIF.DA bits will be clear.
This means that there are two problems:
(1) It is possible to take Debug, SError, or pseudo-NMI exceptions during the resume process. This is unsafe, as during the resume process both the old ane new kernels will tranisently be in an inconsistent state, and swsusparchsuspendexit() won't retain an executable mapping of any exception vectors.
Any exception taken here will be fatal and silent.
(2) When re-entering the resumed kernel, some DAIF bits will be clear unexpectedly. This permits Debug, SError, or pseudo-NMI exceptions to be taken for a short period while the resumed kernel is not yet in a consistent state.
This is detected by CONFIGARM64DEBUGPRIORITYMASKING.
Avoid these issues by masking all DAIF exceptions during resume.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Configuration
Mask all DAIF exceptions during resume before restoring the hibernated kernel.
Linux kernel arm64 hibernate resume DAIF exception masking = masked
Event History
Frequently Asked Questions
Which systems are exposed to this issue?
The issue affects arm64 systems when resuming from a hibernation image. It occurs in the kernel hibernation resume path, while the old and restored kernels are transiently in an inconsistent state.
Does pseudo-NMI configuration change the risk?
Pseudo-NMI can allow pseudo-NMI exceptions during resume because the DAIF.IF bits may be clear. Debug and SError exceptions may also be possible regardless of pseudo-NMI because the DAIF.DA bits may be clear.
What can happen if an exception occurs during resume?
An exception during this stage can be fatal and silent because executable mappings for exception vectors are not retained. The flawed exception masking can also lead to crashes or warnings during resume.