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 kernel6.12Upgrade kernel-tools-debuginfoUpgrade kernel-headersUpgrade bpftool-debuginfoUpgrade kernel-libbpfUpgrade perf6.12Upgrade bpftoolUpgrade kernel-libbpf-debuginfoUpgrade kernel6.12-debuginfo-common-x86_64Upgrade kernel-libbpf-staticUpgrade kernel-toolsUpgrade kernel6.12-debuginfo-common-aarch64Upgrade kernel-livepatch-6.12.23-29.97Upgrade kernel-tools-develUpgrade kernel6.12-debuginfoUpgrade python3-perf6.12-debuginfoUpgrade perf6.12-debuginfoUpgrade kernel6.12-modules-extraUpgrade kernel-libbpf-develUpgrade python3-perf6.12Upgrade kernel-develUpgrade kernel-modules-extra-common | Jun 24, 2025 | Apr 16, 2025 |
| Debian | — | Upgrade linux | Jul 23, 2026 | Jul 23, 2026 |
| Huawei Euleros 2_0_sp13 | — | Upgrade python3-perfUpgrade kernelUpgrade kernel-toolsUpgrade bpftoolUpgrade kernel-abi-stablelistsUpgrade kernel-tools-libs | Mar 10, 2026 | Mar 10, 2026 |
| Redhat_linux | — | No solution exists | Jul 9, 2025 | Apr 16, 2025 |
| Suse | — | Upgrade kernel-rt_debug-vdsoUpgrade dtb-broadcomUpgrade kernel-syms-azureUpgrade kernel-default-base-rebuildUpgrade kernel-rt-livepatch-develUpgrade kselftests-kmp-azureUpgrade dtb-rockchipUpgrade cluster-md-kmp-64kbUpgrade kernel-azure-develUpgrade kernel-default-extraUpgrade kernel-azureUpgrade kernel-docs-htmlUpgrade dtb-sprdUpgrade cluster-md-kmp-defaultUpgrade kernel-kvmsmallUpgrade dtb-marvellUpgrade dtb-exynosUpgrade kselftests-kmp-64kbUpgrade kernel-rtUpgrade kernel-syms-rtUpgrade kernel-macrosUpgrade dlm-kmp-64kbUpgrade kernel-obs-buildUpgrade kernel-source-vanillaUpgrade dlm-kmp-rtUpgrade dtb-nvidiaUpgrade dtb-amlogicUpgrade kernel-azure-vdsoUpgrade kernel-azure-optionalUpgrade ocfs2-kmp-64kbUpgrade kernel-defaultUpgrade kernel-rt-vdsoUpgrade kernel-rt_debug-develUpgrade kernel-source-rtUpgrade kernel-default-livepatchUpgrade kernel-rt-extraUpgrade kernel-rt_debugUpgrade kernel-debug-vdsoUpgrade kernel-docsUpgrade dtb-qcomUpgrade reiserfs-kmp-64kbUpgrade kernel-devel-azureUpgrade kernel-sourceUpgrade kernel-kvmsmall-vdsoUpgrade kernel-rt-optionalUpgrade dlm-kmp-defaultUpgrade dlm-kmp-azureUpgrade reiserfs-kmp-rtUpgrade reiserfs-kmp-defaultUpgrade kernel-default-baseUpgrade kernel-rt-develUpgrade kernel-default-optionalUpgrade dtb-renesasUpgrade dtb-freescaleUpgrade kernel-debug-develUpgrade gfs2-kmp-azureUpgrade cluster-md-kmp-azureUpgrade gfs2-kmp-defaultUpgrade kernel-azure-extraUpgrade kernel-64kb-extraUpgrade kernel-64kb-develUpgrade dtb-xilinxUpgrade dtb-armUpgrade reiserfs-kmp-azureUpgrade kernel-develUpgrade kernel-obs-qaUpgrade dtb-mediatekUpgrade ocfs2-kmp-azureUpgrade kernel-default-livepatch-develUpgrade kernel-default-vdsoUpgrade dtb-alteraUpgrade ocfs2-kmp-rtUpgrade kernel-zfcpdumpUpgrade dtb-lgUpgrade kselftests-kmp-defaultUpgrade cluster-md-kmp-rtUpgrade dtb-socionextUpgrade dtb-hisiliconUpgrade kernel-symsUpgrade kernel-debugUpgrade gfs2-kmp-rtUpgrade dtb-appleUpgrade dtb-amdUpgrade kernel-64kbUpgrade dtb-caviumUpgrade kernel-devel-rtUpgrade kernel-64kb-optionalUpgrade dtb-allwinnerUpgrade kernel-source-azureUpgrade kernel-kvmsmall-develUpgrade kernel-default-develUpgrade gfs2-kmp-64kbUpgrade dtb-apmUpgrade dtb-amazonUpgrade ocfs2-kmp-defaultUpgrade kselftests-kmp-rt | Dec 5, 2025 | Jun 12, 2025 |
| Ubuntu | — | Upgrade linux-image-lowlatency-64k-6.11Upgrade linux-image-6.14.0-22-genericUpgrade linux-image-raspiUpgrade linux-image-6.11.0-1017-oracleUpgrade linux-image-6.14.0-1007-aws-64kUpgrade linux-image-6.14.0-1008-gcp-64kUpgrade linux-image-azure-fdeUpgrade linux-image-6.11.0-1015-awsUpgrade linux-image-azureUpgrade linux-image-6.11.0-1017-oracle-64kUpgrade linux-image-awsUpgrade linux-image-6.11.0-1024-oemUpgrade linux-image-6.14.0-1007-oracle-64kUpgrade linux-image-genericUpgrade linux-image-6.14.0-22-generic-64kUpgrade linux-image-6.14.0-1007-azureUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-gcp-64kUpgrade linux-image-generic-64kUpgrade linux-image-6.14.0-1007-raspiUpgrade linux-image-lowlatency-64kUpgrade linux-image-6.14.0-1007-awsUpgrade linux-image-6.11.0-1016-gcpUpgrade linux-image-6.14.0-1008-gcpUpgrade linux-image-6.11.0-1014-raspiUpgrade linux-image-oracleUpgrade linux-image-6.11.0-28-generic-64kUpgrade linux-image-6.11.0-1015-lowlatencyUpgrade linux-image-gcpUpgrade linux-image-lowlatencyUpgrade linux-image-aws-64kUpgrade linux-image-generic-hwe-24.04Upgrade linux-image-virtual-hwe-24.04Upgrade linux-image-realtimeUpgrade linux-image-oracle-64kUpgrade linux-image-oem-24.04bUpgrade linux-image-6.11.0-28-genericUpgrade linux-image-6.14.0-1004-realtimeUpgrade linux-image-azure-fde-edgeUpgrade linux-image-6.11.0-1015-lowlatency-64kUpgrade linux-image-lowlatency-6.11Upgrade linux-image-6.14.0-1007-oracleUpgrade linux-image-azure-fde-6.11Upgrade linux-image-6.14.0-1007-azure-fdeUpgrade linux-image-lowlatency-64k-hwe-24.04Upgrade linux-image-6.11.0-1018-azure-fdeUpgrade linux-image-6.11.0-1011-realtimeUpgrade linux-image-virtualUpgrade linux-image-6.11.0-1018-azureUpgrade linux-image-lowlatency-hwe-24.04Upgrade linux-image-azure-6.11Upgrade linux-image-6.11.0-1016-gcp-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