In the Linux kernel, the following vulnerability has been resolved:
mm: zswap: fix crypto_free_acomp() deadlock in zswap_cpu_comp_dead()
Currently, zswap_cpu_comp_dead() calls crypto_free_acomp() while holding the per-CPU acomp_ctx mutex. crypto_free_acomp() then holds scomp_lock (through crypto_exit_scomp_ops_async()).
On the other hand, crypto_alloc_acomp_node() holds the scomp_lock (through crypto_scomp_init_tfm()), and then allocates memory. If the allocation results in reclaim, we may attempt to hold the per-CPU acomp_ctx mutex.
The above dependencies can cause an ABBA deadlock. For example in the following scenario:
(1) Task A running on CPU #1: crypto_alloc_acomp_node() Holds scomp_lock Enters reclaim Reads per_cpu_ptr(pool->acomp_ctx, 1)
(2) Task A is descheduled
(3) CPU #1 goes offline zswap_cpu_comp_dead(CPU #1) Holds per_cpu_ptr(pool->acomp_ctx, 1)) Calls crypto_free_acomp() Waits for scomp_lock
(4) Task A running on CPU #2: Waits for per_cpu_ptr(pool->acomp_ctx, 1) // Read on CPU #1 DEADLOCK
Since there is no requirement to call crypto_free_acomp() with the per-CPU acomp_ctx mutex held in zswap_cpu_comp_dead(), move it after the mutex is unlocked. Also move the acomp_request_free() and kfree() calls for consistency and to avoid any potential sublte locking dependencies in the future.
With this, only setting acomp_ctx fields to NULL occurs with the mutex held. This is similar to how zswap_cpu_comp_prepare() only initializes acomp_ctx fields with the mutex held, after performing all allocations before holding the mutex.
Opportunistically, move the NULL check on acomp_ctx so that it takes place before the mutex dereference.
CVSS Details
- CVSS 3.1 Base Score: 5.5
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Amazon_linux_2023 | — | Upgrade kernel-tools-develUpgrade perf6.12-debuginfoUpgrade python3-perf6.12-debuginfoUpgrade kernel6.12-debuginfoUpgrade kernel-develUpgrade python3-perf6.12Upgrade kernel-livepatch-6.12.23-29.97Upgrade kernel6.12-debuginfo-common-aarch64Upgrade kernel-modules-extra-commonUpgrade kernel6.12-modules-extraUpgrade kernel-libbpf-develUpgrade kernel-libbpfUpgrade bpftoolUpgrade bpftool-debuginfoUpgrade kernel-tools-debuginfoUpgrade kernel-libbpf-staticUpgrade kernel-libbpf-debuginfoUpgrade kernel6.12-debuginfo-common-x86_64Upgrade kernel-headersUpgrade kernel-toolsUpgrade kernel6.12Upgrade perf6.12 | Jun 24, 2025 | Apr 16, 2025 |
| Debian | — | Upgrade linux | Jul 23, 2026 | Jul 23, 2026 |
| Huawei Euleros 2_0_sp13 | — | Upgrade kernel-tools-libsUpgrade kernel-abi-stablelistsUpgrade bpftoolUpgrade kernel-toolsUpgrade kernelUpgrade python3-perf | Mar 10, 2026 | Mar 10, 2026 |
| Redhat_linux | — | No solution exists | Jul 9, 2025 | Apr 16, 2025 |
| Suse | — | Upgrade kselftests-kmp-azureUpgrade kernel-azureUpgrade kernel-rt-livepatch-develUpgrade kernel-azure-develUpgrade dtb-rockchipUpgrade kernel-docs-htmlUpgrade kernel-kvmsmallUpgrade dtb-exynosUpgrade kernel-devel-azureUpgrade kernel-docsUpgrade ocfs2-kmp-64kbUpgrade kernel-rt-optionalUpgrade kernel-rt_debug-develUpgrade kernel-azure-vdsoUpgrade kernel-default-extraUpgrade kernel-obs-buildUpgrade kernel-rt-vdsoUpgrade kernel-sourceUpgrade cluster-md-kmp-defaultUpgrade dtb-nvidiaUpgrade kernel-source-rtUpgrade dlm-kmp-rtUpgrade kernel-azure-optionalUpgrade kernel-macrosUpgrade dtb-qcomUpgrade kernel-rtUpgrade kernel-defaultUpgrade kernel-rt-extraUpgrade kernel-rt_debugUpgrade reiserfs-kmp-64kbUpgrade cluster-md-kmp-64kbUpgrade kernel-debug-vdsoUpgrade kselftests-kmp-64kbUpgrade dtb-marvellUpgrade kernel-source-vanillaUpgrade kernel-default-livepatchUpgrade kernel-default-base-rebuildUpgrade dtb-amlogicUpgrade kernel-syms-azureUpgrade dtb-sprdUpgrade kernel-kvmsmall-vdsoUpgrade dtb-broadcomUpgrade kernel-syms-rtUpgrade dlm-kmp-64kbUpgrade kernel-rt_debug-vdsoUpgrade kselftests-kmp-rtUpgrade kernel-rt-develUpgrade reiserfs-kmp-rtUpgrade reiserfs-kmp-azureUpgrade kernel-zfcpdumpUpgrade kernel-default-vdsoUpgrade kernel-azure-extraUpgrade kernel-64kb-develUpgrade dtb-armUpgrade kernel-default-optionalUpgrade kernel-develUpgrade dtb-alteraUpgrade dtb-lgUpgrade kernel-debugUpgrade kernel-64kbUpgrade dtb-socionextUpgrade dtb-hisiliconUpgrade kernel-symsUpgrade kernel-default-livepatch-develUpgrade kernel-obs-qaUpgrade ocfs2-kmp-azureUpgrade dtb-mediatekUpgrade gfs2-kmp-rtUpgrade dtb-caviumUpgrade dtb-appleUpgrade dtb-amdUpgrade dtb-freescaleUpgrade dlm-kmp-azureUpgrade reiserfs-kmp-defaultUpgrade kernel-default-baseUpgrade cluster-md-kmp-azureUpgrade dtb-renesasUpgrade kernel-devel-rtUpgrade kernel-64kb-optionalUpgrade dtb-allwinnerUpgrade dlm-kmp-defaultUpgrade cluster-md-kmp-rtUpgrade kernel-64kb-extraUpgrade dtb-xilinxUpgrade ocfs2-kmp-defaultUpgrade kernel-source-azureUpgrade kernel-kvmsmall-develUpgrade kernel-default-develUpgrade kernel-debug-develUpgrade gfs2-kmp-defaultUpgrade gfs2-kmp-azureUpgrade gfs2-kmp-64kbUpgrade dtb-apmUpgrade dtb-amazonUpgrade kselftests-kmp-defaultUpgrade ocfs2-kmp-rt | Dec 5, 2025 | Jun 12, 2025 |
| Ubuntu | — | Upgrade linux-image-6.14.0-1007-raspiUpgrade linux-image-azureUpgrade linux-image-6.14.0-1008-gcpUpgrade linux-image-awsUpgrade linux-image-6.14.0-1007-oracle-64kUpgrade linux-image-6.11.0-1024-oemUpgrade linux-image-gcp-64kUpgrade linux-image-6.11.0-1016-gcpUpgrade linux-image-6.14.0-1007-aws-64kUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-lowlatency-64kUpgrade linux-image-genericUpgrade linux-image-6.11.0-1017-oracle-64kUpgrade linux-image-azure-fdeUpgrade linux-image-6.11.0-1015-awsUpgrade linux-image-generic-64kUpgrade linux-image-6.14.0-1007-awsUpgrade linux-image-6.14.0-1007-azureUpgrade linux-image-6.11.0-1014-raspiUpgrade linux-image-raspiUpgrade linux-image-6.14.0-22-genericUpgrade linux-image-lowlatency-64k-6.11Upgrade linux-image-6.11.0-1017-oracleUpgrade linux-image-6.14.0-1008-gcp-64kUpgrade linux-image-6.14.0-22-generic-64kUpgrade linux-image-6.11.0-1018-azure-fdeUpgrade linux-image-6.11.0-28-genericUpgrade linux-image-oem-24.04bUpgrade linux-image-6.11.0-1018-azureUpgrade linux-image-virtual-hwe-24.04Upgrade linux-image-6.14.0-1007-oracleUpgrade linux-image-lowlatency-64k-hwe-24.04Upgrade linux-image-virtualUpgrade linux-image-6.11.0-1011-realtimeUpgrade linux-image-azure-fde-edgeUpgrade linux-image-6.14.0-1004-realtimeUpgrade linux-image-6.11.0-1015-lowlatencyUpgrade linux-image-aws-64kUpgrade linux-image-lowlatencyUpgrade linux-image-lowlatency-hwe-24.04Upgrade linux-image-azure-6.11Upgrade linux-image-6.11.0-1016-gcp-64kUpgrade linux-image-lowlatency-6.11Upgrade linux-image-gcpUpgrade linux-image-oracleUpgrade linux-image-generic-hwe-24.04Upgrade linux-image-6.11.0-1015-lowlatency-64kUpgrade linux-image-azure-fde-6.11Upgrade linux-image-6.14.0-1007-azure-fdeUpgrade linux-image-realtimeUpgrade linux-image-oracle-64kUpgrade linux-image-6.11.0-28-generic-64k | Jun 26, 2025 | Apr 16, 2025 |
Prioritise with Active Threat Intelligence
With curated Threat Intelligence, you can see which vulnerabilities truly put you at risk, prioritize what matters most, and act before attackers do.
Explore Intelligence Hub