UBUNTU-CVE-2026-89807: Null Pointer Dereference
In the Linux kernel, the following vulnerability has been resolved: drm/amdkfd: guard against NULL restoremqd in CRIU queue restore Both createqueuecpsch() and createqueuenocpsch() unconditionally call mqdmgr->restoremqd() when a CRIU restore is in progress (qd != NULL), with no NULL guard. On any system where restoremqd is not implemented for the given queue type, a user holding CAPCHECKPOINTRESTORE can trigger a kernel NULL pointer dereference and panic the machine by issuing KFDIOCCRIUOPRESTORE with a crafted queue restore object. Note that checkpointmqd is likewise unimplemented on GFX12, so no legitimate CRIU image can reach this path — only a hand-crafted restore payload. Add a NULL guard for restoremqd immediately after mqdmgr is resolved, unwinding via the existing error labels and returning -EOPNOTSUPP if the callback is not implemented. This mirrors the existing checkpointmqd guard in checkpointmqd().
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
ubuntu/linux-hwe-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-42.42~24.04.1 - Upgrade
Upgrade
ubuntu/linux-riscv-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-42.42.1~24.04.1 - Upgrade
Upgrade
ubuntu/linuxto a version that resolves this vulnerability.Fixed in 7.0.0-42.42 - Upgrade
Upgrade
ubuntu/linux-awsto a version that resolves this vulnerability.Fixed in 7.0.0-1016.17 - Upgrade
Upgrade
ubuntu/linux-gcpto a version that resolves this vulnerability.Fixed in 7.0.0-1016.18 - Upgrade
Upgrade
ubuntu/linux-ibmto a version that resolves this vulnerability.Fixed in 7.0.0-1017.17 - Upgrade
Upgrade
ubuntu/linux-oem-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-1017.17 - Upgrade
Upgrade
ubuntu/linux-oracleto a version that resolves this vulnerability.Fixed in 7.0.0-1015.16 - Upgrade
Upgrade
ubuntu/linux-riscvto a version that resolves this vulnerability.Fixed in 7.0.0-42.42.1 - Compensating control
Add a NULL guard for restore_mqd immediately after mqd_mgr is resolved in both create_queue_cpsch() and create_queue_nocpsch(); if the callback is not implemented, unwind via the existing error labels and return -EOPNOTSUPP.
Event History
Frequently Asked Questions
Who can trigger the crash?
An attacker needs CAP_CHECKPOINT_RESTORE and access to issue the KFD_IOC_CRIU_OP_RESTORE ioctl with a crafted queue restore object. The described outcome is a kernel NULL pointer dereference that can panic the machine.
Is a valid CRIU checkpoint image required to exploit this?
No. On GFX12, checkpoint_mqd is also unimplemented, so a legitimate CRIU image cannot reach this path; exploitation requires a hand-crafted restore payload.
What happens after the fix when the restore callback is unavailable?
The kernel guards the restore_mqd callback and returns -EOPNOTSUPP when it is not implemented, rather than dereferencing a NULL callback.