In the Linux kernel, the following vulnerability has been resolved:
crypto: qat - flush misc workqueue during device shutdown
Repeated loading and unloading of a device specific QAT driver, for example qat4xxx, in a tight loop can lead to a crash due to a use-after-free scenario. This occurs when a power management (PM) interrupt triggers just before the device-specific driver (e.g., qat4xxx.ko) is unloaded, while the core driver (intel_qat.ko) remains loaded.
Since the driver uses a shared workqueue (qat_misc_wq) across all
devices and owned by intel_qat.ko, a deferred routine from the
device-specific driver may still be pending in the queue. If this
routine executes after the driver is unloaded, it can dereference freed
memory, resulting in a page fault and kernel crash like the following:
BUG: unable to handle page fault for address: ffa000002e50a01c
#PF: supervisor read access in kernel mode
RIP: 0010:pm_bh_handler+0x1d2/0x250 [intel_qat]
Call Trace:
pm_bh_handler+0x1d2/0x250 [intel_qat]
process_one_work+0x171/0x340
worker_thread+0x277/0x3a0
kthread+0xf0/0x120
ret_from_fork+0x2d/0x50
To prevent this, flush the misc workqueue during device shutdown to ensure that all pending work items are completed before the driver is unloaded.
Note: This approach may slightly increase shutdown latency if the workqueue contains jobs from other devices, but it ensures correctness and stability.
[
{
"signature_version": "v1",
"deprecated": false,
"target": {
"file": "drivers/crypto/intel/qat/qat_common/adf_common_drv.h"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@fe546f5c50fc474daca6bee72caa7ab68a74c33d",
"digest": {
"line_hashes": [
"300463152734477861155469999509099524007",
"288796331039966203176762158159452029368",
"61778264227304562568730194550342934459",
"250114694481440085943839759425920137893"
],
"threshold": 0.9
},
"signature_type": "Line",
"id": "CVE-2025-39721-02506325"
},
{
"signature_version": "v1",
"deprecated": false,
"target": {
"function": "adf_dev_shutdown",
"file": "drivers/crypto/intel/qat/qat_common/adf_init.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@fe546f5c50fc474daca6bee72caa7ab68a74c33d",
"digest": {
"function_hash": "185721370723068638891904519569013585213",
"length": 1502.0
},
"signature_type": "Function",
"id": "CVE-2025-39721-0cc53e19"
},
{
"signature_version": "v1",
"deprecated": false,
"target": {
"function": "adf_dev_shutdown",
"file": "drivers/crypto/intel/qat/qat_common/adf_init.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3d4df408ba9bad2b205c7fb8afc1836a6a4ca88a",
"digest": {
"function_hash": "185721370723068638891904519569013585213",
"length": 1502.0
},
"signature_type": "Function",
"id": "CVE-2025-39721-17123b17"
},
{
"signature_version": "v1",
"deprecated": false,
"target": {
"file": "drivers/crypto/intel/qat/qat_common/adf_init.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@fe546f5c50fc474daca6bee72caa7ab68a74c33d",
"digest": {
"line_hashes": [
"230987015914385084413466777182630723827",
"57970423765352785627687001816990713206",
"49595460635658217159839622543994908639",
"179978352032813184033667693158657578305"
],
"threshold": 0.9
},
"signature_type": "Line",
"id": "CVE-2025-39721-2def59dc"
},
{
"signature_version": "v1",
"deprecated": false,
"target": {
"file": "drivers/crypto/intel/qat/qat_common/adf_init.c"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3d4df408ba9bad2b205c7fb8afc1836a6a4ca88a",
"digest": {
"line_hashes": [
"230987015914385084413466777182630723827",
"57970423765352785627687001816990713206",
"49595460635658217159839622543994908639",
"179978352032813184033667693158657578305"
],
"threshold": 0.9
},
"signature_type": "Line",
"id": "CVE-2025-39721-83d6c6b0"
},
{
"signature_version": "v1",
"deprecated": false,
"target": {
"file": "drivers/crypto/intel/qat/qat_common/adf_common_drv.h"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@3d4df408ba9bad2b205c7fb8afc1836a6a4ca88a",
"digest": {
"line_hashes": [
"300463152734477861155469999509099524007",
"288796331039966203176762158159452029368",
"61778264227304562568730194550342934459",
"250114694481440085943839759425920137893"
],
"threshold": 0.9
},
"signature_type": "Line",
"id": "CVE-2025-39721-d24b7aab"
}
]