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