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