In the Linux kernel, the following vulnerability has been resolved:
mm/migrate_device: don't add folio to be freed to LRU in migrate_device_finalize()
If migration succeeded, we called folio_migrate_flags()->mem_cgroup_migrate() to migrate the memcg from the old to the new folio. This will set memcg_data of the old folio to 0.
Similarly, if migration failed, memcg_data of the dst folio is left unset.
If we call folio_putback_lru() on such folios (memcg_data == 0), we will add the folio to be freed to the LRU, making memcg code unhappy. Running the hmm selftests:
# ./hmm-tests ... # RUN hmm.hmm_device_private.migrate ... [ 102.078007][T14893] page: refcount:1 mapcount:0 mapping:0000000000000000 index:0x7ff27d200 pfn:0x13cc00 [ 102.079974][T14893] anon flags: 0x17ff00000020018(uptodate|dirty|swapbacked|node=0|zone=2|lastcpupid=0x7ff) [ 102.082037][T14893] raw: 017ff00000020018 dead000000000100 dead000000000122 ffff8881353896c9 [ 102.083687][T14893] raw: 00000007ff27d200 0000000000000000 00000001ffffffff 0000000000000000 [ 102.085331][T14893] page dumped because: VM_WARN_ON_ONCE_FOLIO(!memcg && !mem_cgroup_disabled()) [ 102.087230][T14893] ------------[ cut here ]------------ [ 102.088279][T14893] WARNING: CPU: 0 PID: 14893 at ./include/linux/memcontrol.h:726 folio_lruvec_lock_irqsave+0x10e/0x170 [ 102.090478][T14893] Modules linked in: [ 102.091244][T14893] CPU: 0 UID: 0 PID: 14893 Comm: hmm-tests Not tainted 6.13.0-09623-g6c216bc522fd #151 [ 102.093089][T14893] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-2.fc40 04/01/2014 [ 102.094848][T14893] RIP: 0010:folio_lruvec_lock_irqsave+0x10e/0x170 [ 102.096104][T14893] Code: ... [ 102.099908][T14893] RSP: 0018:ffffc900236c37b0 EFLAGS: 00010293 [ 102.101152][T14893] RAX: 0000000000000000 RBX: ffffea0004f30000 RCX: ffffffff8183f426 [ 102.102684][T14893] RDX: ffff8881063cb880 RSI: ffffffff81b8117f RDI: ffff8881063cb880 [ 102.104227][T14893] RBP: 0000000000000000 R08: 0000000000000005 R09: 0000000000000000 [ 102.105757][T14893] R10: 0000000000000001 R11: 0000000000000002 R12: ffffc900236c37d8 [ 102.107296][T14893] R13: ffff888277a2bcb0 R14: 000000000000001f R15: 0000000000000000 [ 102.108830][T14893] FS: 00007ff27dbdd740(0000) GS:ffff888277a00000(0000) knlGS:0000000000000000 [ 102.110643][T14893] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 102.111924][T14893] CR2: 00007ff27d400000 CR3: 000000010866e000 CR4: 0000000000750ef0 [ 102.113478][T14893] PKRU: 55555554 [ 102.114172][T14893] Call Trace: [ 102.114805][T14893] <TASK> [ 102.115397][T14893] ? folio_lruvec_lock_irqsave+0x10e/0x170 [ 102.116547][T14893] ? __warn.cold+0x110/0x210 [ 102.117461][T14893] ? folio_lruvec_lock_irqsave+0x10e/0x170 [ 102.118667][T14893] ? report_bug+0x1b9/0x320 [ 102.119571][T14893] ? handle_bug+0x54/0x90 [ 102.120494][T14893] ? exc_invalid_op+0x17/0x50 [ 102.121433][T14893] ? asm_exc_invalid_op+0x1a/0x20 [ 102.122435][T14893] ? __wake_up_klogd.part.0+0x76/0xd0 [ 102.123506][T14893] ? dump_page+0x4f/0x60 [ 102.124352][T14893] ? folio_lruvec_lock_irqsave+0x10e/0x170 [ 102.125500][T14893] folio_batch_move_lru+0xd4/0x200 [ 102.126577][T14893] ? __pfx_lru_add+0x10/0x10 [ 102.127505][T14893] __folio_batch_add_and_move+0x391/0x720 [ 102.128633][T14893] ? __pfx_lru_add+0x10/0x10 [ 102.129550][T14893] folio_putback_lru+0x16/0x80 [ 102.130564][T14893] migrate_device_finalize+0x9b/0x530 [ 102.131640][T14893] dmirror_migrate_to_device.constprop.0+0x7c5/0xad0 [ 102.133047][T14893] dmirror_fops_unlocked_ioctl+0x89b/0xc80
Likely, nothing else goes wrong: putting the last folio reference will remove the folio from the LRU again. So besides memcg complaining, adding the folio to be freed to the LRU is just an unnecessary step.
The new flow resembles what we have in migrate_folio_move(): add the dst to the lru, rem ---truncated---
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Alma_linux | — | Upgrade kernel-zfcpdump-modulesUpgrade kernel-rt-debug-modulesUpgrade kernel-debug-coreUpgrade kernel-zfcpdumpUpgrade kernel-rt-64k-coreUpgrade kernel-rt-64k-debugUpgrade kernel-64k-develUpgrade kernel-debug-devel-matchedUpgrade kernel-rt-64k-debug-modulesUpgrade kernel-modules-coreUpgrade kernel-64k-coreUpgrade kernel-rt-64k-debug-develUpgrade kernel-64k-debugUpgrade kernel-rtUpgrade kernel-uki-virt-addonsUpgrade kernel-64k-modulesUpgrade kernel-debugUpgrade kernel-64kUpgrade kernel-rt-develUpgrade kernel-debug-modulesUpgrade kernel-headersUpgrade kernel-rt-modules-coreUpgrade kernel-zfcpdump-modules-coreUpgrade kernel-64k-debug-coreUpgrade kernel-zfcpdump-modules-extraUpgrade kernel-rt-modules-extraUpgrade kernel-debug-modules-extraUpgrade kernel-abi-stablelistsUpgrade kernel-debug-modules-coreUpgrade kernel-zfcpdump-develUpgrade kernel-modules-extraUpgrade kernel-rt-64k-debug-modules-extraUpgrade kernel-rt-debug-coreUpgrade kernel-rt-64k-develUpgrade kernelUpgrade kernel-rt-64k-modules-coreUpgrade kernel-tools-libsUpgrade kernel-zfcpdump-coreUpgrade kernel-cross-headersUpgrade kernel-coreUpgrade kernel-64k-devel-matchedUpgrade rvUpgrade kernel-64k-modules-extraUpgrade kernel-docUpgrade rtlaUpgrade kernel-debug-develUpgrade kernel-devel-matchedUpgrade kernel-64k-debug-modulesUpgrade kernel-zfcpdump-devel-matchedUpgrade kernel-64k-debug-modules-coreUpgrade kernel-rt-debug-develUpgrade kernel-rt-debug-modules-coreUpgrade kernel-rt-64k-debug-coreUpgrade kernel-tools-libs-develUpgrade perfUpgrade kernel-rt-coreUpgrade python3-perfUpgrade kernel-rt-64kUpgrade kernel-rt-64k-modulesUpgrade kernel-debug-uki-virtUpgrade kernel-toolsUpgrade kernel-64k-debug-modules-extraUpgrade kernel-develUpgrade kernel-64k-debug-devel-matchedUpgrade kernel-64k-debug-develUpgrade kernel-64k-modules-coreUpgrade kernel-modulesUpgrade libperfUpgrade kernel-rt-modulesUpgrade kernel-rt-debug-modules-extraUpgrade kernel-rt-64k-modules-extraUpgrade kernel-uki-virtUpgrade kernel-rt-debugUpgrade kernel-rt-64k-debug-modules-core | Nov 20, 2025 | Nov 11, 2025 |
| Debian | — | Upgrade linuxUpgrade linux-6.1 | May 15, 2025 | Mar 12, 2025 |
| Huawei Euleros 2_0_sp11 | — | Upgrade kernel-abi-stablelistsUpgrade kernel-toolsUpgrade kernelUpgrade kernel-tools-libsUpgrade python3-perfUpgrade bpftool | Jun 13, 2025 | Mar 12, 2025 |
| Huawei Euleros 2_0_sp12 | — | Upgrade kernel-toolsUpgrade kernel-abi-stablelistsUpgrade python3-perfUpgrade kernelUpgrade bpftoolUpgrade kernel-tools-libs | Jul 21, 2025 | Mar 12, 2025 |
| Huawei Euleros 2_0_sp13 | — | Upgrade python3-perfUpgrade bpftoolUpgrade kernelUpgrade kernel-abi-stablelistsUpgrade kernel-tools-libsUpgrade kernel-tools | Jul 1, 2025 | Mar 12, 2025 |
| Oracle_linux | — | Upgrade kernel | Nov 28, 2025 | Mar 12, 2025 |
| Redhat_linux | — | No solution existsUpgrade kernel-rtUpgrade kernel | Jul 9, 2025 | Mar 12, 2025 |
| Rocky_linux | — | Upgrade perf-debuginfoUpgrade kernel-rtUpgrade kernel-zfcpdump-coreUpgrade kernel-zfcpdump-devel-matchedUpgrade kernel-debug-modules-extraUpgrade kernel-devel-matchedUpgrade kernel-rt-debuginfoUpgrade kernel-rt-modules-coreUpgrade kernel-uki-virt-addonsUpgrade kernel-debuginfo-common-s390xUpgrade kernel-zfcpdump-debuginfoUpgrade kernel-toolsUpgrade libperfUpgrade kernelUpgrade perfUpgrade kernel-zfcpdump-modulesUpgrade kernel-debug-devel-matchedUpgrade kernel-zfcpdump-modules-coreUpgrade rvUpgrade kernel-rt-modulesUpgrade kernel-rt-modules-extraUpgrade kernel-tools-libs-develUpgrade libperf-debuginfoUpgrade kernel-rt-debug-modules-coreUpgrade kernel-rt-develUpgrade kernel-debug-modulesUpgrade kernel-debugUpgrade kernel-uki-virtUpgrade kernel-rt-debug-coreUpgrade kernel-rt-debug-debuginfoUpgrade kernel-debuginfoUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-coreUpgrade kernel-modules-extraUpgrade kernel-debug-coreUpgrade kernel-modules-coreUpgrade python3-perfUpgrade kernel-rt-debug-develUpgrade kernel-tools-debuginfoUpgrade kernel-rt-debug-modules-extraUpgrade kernel-debug-modules-coreUpgrade rtlaUpgrade kernel-debug-debuginfoUpgrade kernel-zfcpdumpUpgrade kernel-develUpgrade kernel-debug-develUpgrade python3-perf-debuginfoUpgrade kernel-zfcpdump-modules-extraUpgrade kernel-zfcpdump-develUpgrade kernel-tools-libsUpgrade kernel-rt-debugUpgrade kernel-rt-coreUpgrade kernel-modules-extra-matchedUpgrade kernel-modulesUpgrade kernel-debug-uki-virtUpgrade kernel-rt-debug-modules | Feb 5, 2026 | Nov 21, 2025 |
| Suse | — | Upgrade kernel-source-vanillaUpgrade kselftests-kmp-rtUpgrade kernel-rt-optionalUpgrade ocfs2-kmp-64kbUpgrade kernel-64kb-optionalUpgrade kernel-azure-extraUpgrade kernel-default-vdsoUpgrade reiserfs-kmp-azureUpgrade dtb-sprdUpgrade dtb-mediatekUpgrade kselftests-kmp-azureUpgrade kernel-rt-develUpgrade dtb-appleUpgrade cluster-md-kmp-64kbUpgrade kernel-devel-rtUpgrade dlm-kmp-rtUpgrade dtb-hisiliconUpgrade kernel-defaultUpgrade dtb-xilinxUpgrade dlm-kmp-defaultUpgrade dtb-alteraUpgrade kernel-azure-optionalUpgrade gfs2-kmp-defaultUpgrade dtb-caviumUpgrade dtb-amdUpgrade kernel-rt-extraUpgrade kernel-64kb-extraUpgrade dtb-nvidiaUpgrade gfs2-kmp-azureUpgrade kernel-azureUpgrade kernel-default-livepatchUpgrade kernel-debugUpgrade ocfs2-kmp-azureUpgrade kernel-debug-vdsoUpgrade reiserfs-kmp-defaultUpgrade kernel-64kb-develUpgrade kernel-develUpgrade kernel-obs-buildUpgrade kernel-debug-develUpgrade kernel-default-optionalUpgrade reiserfs-kmp-rtUpgrade kernel-default-baseUpgrade cluster-md-kmp-rtUpgrade dtb-allwinnerUpgrade dtb-renesasUpgrade kernel-default-livepatch-develUpgrade kernel-rt_debug-develUpgrade ocfs2-kmp-defaultUpgrade kernel-docs-htmlUpgrade kernel-default-extraUpgrade dtb-armUpgrade kernel-devel-azureUpgrade dtb-freescaleUpgrade dtb-amlogicUpgrade dlm-kmp-azureUpgrade kernel-syms-azureUpgrade kernel-source-azureUpgrade kernel-rt-vdsoUpgrade dlm-kmp-64kbUpgrade kernel-kvmsmall-vdsoUpgrade cluster-md-kmp-azureUpgrade kselftests-kmp-defaultUpgrade kernel-source-rtUpgrade kernel-rt_debugUpgrade kernel-rtUpgrade kernel-default-develUpgrade dtb-qcomUpgrade dtb-exynosUpgrade dtb-broadcomUpgrade kernel-syms-rtUpgrade dtb-apmUpgrade kernel-obs-qaUpgrade kernel-symsUpgrade kernel-sourceUpgrade gfs2-kmp-rtUpgrade gfs2-kmp-64kbUpgrade dtb-lgUpgrade kernel-zfcpdumpUpgrade kernel-azure-vdsoUpgrade kernel-64kbUpgrade cluster-md-kmp-defaultUpgrade reiserfs-kmp-64kbUpgrade ocfs2-kmp-rtUpgrade kernel-rt_debug-vdsoUpgrade kernel-macrosUpgrade kernel-kvmsmall-develUpgrade dtb-rockchipUpgrade dtb-marvellUpgrade dtb-amazonUpgrade kernel-rt-livepatch-develUpgrade dtb-socionextUpgrade kernel-kvmsmallUpgrade kselftests-kmp-64kbUpgrade kernel-docsUpgrade kernel-default-base-rebuildUpgrade kernel-azure-devel | Dec 5, 2025 | Jun 12, 2025 |
| Ubuntu | — | Upgrade linux-image-generic-6.8Upgrade linux-image-5.15.0-1096-gkeUpgrade linux-image-intel-iotg-5.15Upgrade linux-image-azure-lts-24.04Upgrade linux-image-raspiUpgrade linux-image-raspi-realtime-6.8Upgrade linux-image-oracle-64k-6.8Upgrade linux-image-raspi-realtimeUpgrade linux-image-5.15.0-1064-xilinx-zynqmpUpgrade linux-image-nvidia-tegra-igx-5.15Upgrade linux-image-kvm-5.15Upgrade linux-image-azure-nvidia-lts-24.04Upgrade linux-image-oem-20.04bUpgrade linux-image-generic-lpaeUpgrade linux-image-lowlatency-hwe-20.04Upgrade linux-image-lowlatency-6.8Upgrade linux-image-intelUpgrade linux-image-intel-iot-realtimeUpgrade linux-image-5.15.0-1094-ibmUpgrade linux-image-nvidiaUpgrade linux-image-nvidia-tegra-igx-rt-5.15Upgrade linux-image-nvidia-tegra-rt-5.15Upgrade linux-image-5.15.0-1100-aws-64kUpgrade linux-image-5.15.0-1092-kvmUpgrade linux-image-genericUpgrade linux-image-oem-20.04cUpgrade linux-image-generic-64k-hwe-20.04Upgrade linux-image-generic-5.15Upgrade linux-image-5.15.0-1109-azureUpgrade linux-image-oem-22.04cUpgrade linux-image-virtual-6.8Upgrade linux-image-aws-lts-22.04Upgrade linux-image-gkeopUpgrade linux-image-5.15.0-1095-intel-iotgUpgrade linux-image-5.15.0-170-generic-lpaeUpgrade linux-image-5.15.0-1109-azure-fipsUpgrade linux-image-intel-iotgUpgrade linux-image-ibm-6.8Upgrade linux-image-6.8.0-1019-gkeopUpgrade linux-image-azure-lts-22.04Upgrade linux-image-fips-5.15Upgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-lowlatencyUpgrade linux-image-nvidia-tegra-rtUpgrade linux-image-oracle-lts-24.04Upgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-gcp-lts-22.04Upgrade linux-image-nvidia-lowlatency-6.8Upgrade linux-image-nvidia-tegraUpgrade linux-image-generic-64kUpgrade linux-image-oracle-5.15Upgrade linux-image-5.15.0-1100-awsUpgrade linux-image-6.8.0-1035-raspiUpgrade linux-image-azure-fde-lts-24.04Upgrade linux-image-gcp-64k-lts-24.04Upgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-nvidia-tegra-igx-rtUpgrade linux-image-nvidia-5.15Upgrade linux-image-azure-nvidiaUpgrade linux-image-gkeop-6.8Upgrade linux-image-generic-lpae-5.15Upgrade linux-image-ibm-classicUpgrade linux-image-oem-22.04aUpgrade linux-image-5.15.0-1097-raspiUpgrade linux-image-6.8.0-1035-nvidia-lowlatency-64kUpgrade linux-image-6.8.0-1022-azure-nvidiaUpgrade linux-image-gke-6.8Upgrade linux-image-6.8.0-2028-raspi-realtimeUpgrade linux-image-lowlatency-64kUpgrade linux-image-5.15.0-1052-nvidia-tegra-rtUpgrade linux-image-azureUpgrade linux-image-azure-fdeUpgrade linux-image-azure-fips-5.15Upgrade linux-image-6.8.1-1030-realtimeUpgrade linux-image-azure-nvidia-6.8Upgrade linux-image-5.15.0-1041-nvidia-tegra-igx-rtUpgrade linux-image-5.15.0-170-generic-64kUpgrade linux-image-5.15.0-170-lowlatency-64kUpgrade linux-image-fipsUpgrade linux-image-5.15.0-1100-aws-fipsUpgrade linux-image-gcp-fipsUpgrade linux-image-5.15.0-1095-nvidiaUpgrade linux-image-ibmUpgrade linux-image-nvidia-tegra-5.15Upgrade linux-image-aws-6.8Upgrade linux-image-aws-fipsUpgrade linux-image-nvidia-lowlatencyUpgrade linux-image-nvidia-lowlatency-5.15Upgrade linux-image-oracle-64k-lts-24.04Upgrade linux-image-virtual-hwe-22.04Upgrade linux-image-oem-22.04Upgrade linux-image-5.15.0-170-fipsUpgrade linux-image-6.8.0-1035-nvidiaUpgrade linux-image-gke-5.15Upgrade linux-image-ibm-lts-24.04Upgrade linux-image-aws-64kUpgrade linux-image-5.15.0-170-lowlatencyUpgrade linux-image-6.8.0-1034-azureUpgrade linux-image-gkeUpgrade linux-image-6.8.0-1033-ibmUpgrade linux-image-5.15.0-1100-gcpUpgrade linux-image-aws-64k-5.15Upgrade linux-image-kvmUpgrade linux-image-lowlatency-5.15Upgrade linux-image-oracle-64kUpgrade linux-image-gkeop-5.15Upgrade linux-image-gcp-6.8Upgrade linux-image-azure-5.15Upgrade linux-image-raspi-nolpaeUpgrade linux-image-xilinx-zynqmp-5.15Upgrade linux-image-gcp-lts-24.04Upgrade linux-image-azure-fde-6.8Upgrade linux-image-nvidia-64kUpgrade linux-image-lowlatency-64k-5.15Upgrade linux-image-5.15.0-1041-nvidia-tegra-igxUpgrade linux-image-lowlatency-64k-hwe-20.04Upgrade linux-image-6.8.0-1036-gcpUpgrade linux-image-gcpUpgrade linux-image-azure-cvmUpgrade linux-image-6.8.0-78-lowlatencyUpgrade linux-image-5.15.0-1095-nvidia-lowlatencyUpgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-5.15.0-1110-azureUpgrade linux-image-generic-64k-6.8Upgrade linux-image-realtimeUpgrade linux-image-6.8.0-1035-aws-64kUpgrade linux-image-5.15.0-1099-realtimeUpgrade linux-image-nvidia-6.8Upgrade linux-image-gcp-fips-5.15Upgrade linux-image-6.8.0-78-lowlatency-64kUpgrade linux-image-oem-20.04Upgrade linux-image-gcp-64k-6.8Upgrade linux-image-realtime-6.8.1Upgrade linux-image-oem-22.04bUpgrade linux-image-aws-lts-24.04Upgrade linux-image-6.8.0-1034-azure-fdeUpgrade linux-image-aws-64k-6.8Upgrade linux-image-virtualUpgrade linux-image-virtual-hwe-20.04Upgrade linux-image-6.8.0-1036-gcp-64kUpgrade linux-image-5.15.0-1083-gkeopUpgrade linux-image-generic-64k-5.15Upgrade linux-image-6.8.0-1032-gkeUpgrade linux-image-generic-lpae-hwe-20.04Upgrade linux-image-ibm-5.15Upgrade linux-image-raspi-6.8Upgrade linux-image-6.8.0-78-genericUpgrade linux-image-5.15.0-1092-intel-iot-realtimeUpgrade linux-image-aws-fips-5.15Upgrade linux-image-aws-64k-lts-22.04Upgrade linux-image-gcp-5.15Upgrade linux-image-generic-hwe-20.04Upgrade linux-image-6.8.0-78-generic-64kUpgrade linux-image-nvidia-hwe-22.04Upgrade linux-image-gcp-64kUpgrade linux-image-azure-6.8Upgrade linux-image-6.8.0-1032-oracle-64kUpgrade linux-image-intel-iot-realtime-5.15Upgrade linux-image-oem-20.04dUpgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-aws-64k-lts-24.04Upgrade linux-image-6.8.0-1032-oracleUpgrade linux-image-nvidia-64k-6.8Upgrade linux-image-raspi-5.15Upgrade linux-image-5.15.0-170-genericUpgrade linux-image-nvidia-tegra-igxUpgrade linux-image-nvidia-lowlatency-64k-6.8Upgrade linux-image-oracle-lts-22.04Upgrade linux-image-6.8.0-1035-awsUpgrade linux-image-generic-hwe-22.04Upgrade linux-image-6.8.0-1035-nvidia-lowlatencyUpgrade linux-image-lowlatency-64k-6.8Upgrade linux-image-oracle-6.8Upgrade linux-image-oracleUpgrade linux-image-realtime-5.15Upgrade linux-image-5.15.0-1052-nvidia-tegraUpgrade linux-image-oem-22.04dUpgrade linux-image-5.15.0-1097-oracleUpgrade linux-image-awsUpgrade linux-image-xilinx-zynqmpUpgrade linux-image-virtual-5.15Upgrade linux-image-azure-fipsUpgrade linux-image-aws-5.15Upgrade linux-image-5.15.0-1100-gcp-fipsUpgrade linux-image-6.8.0-1035-nvidia-64k | Jun 26, 2025 | Mar 12, 2025 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Oct 14, 2025 | Mar 12, 2025 |
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