CVE-2026-23097 migrate: correct lock ordering for hugetlb file folios
A lock ordering error in the Linux kernel's hugetlb migration path can cause a deadlock, leading to a denial of service.
- Exploited in the wild
- Not known
- Login needed
- Any signed-in user
- Attackable
- Local or same network only
- Victim action needed
- Not needed
- Fix
- Available
What is CVE-2026-23097?
CVE-2026-23097 is a medium-severity vulnerability in Linux kernel, published on 4 Feb 2026. It can only be exploited from the same machine or local network, with no action from the victim.
Official description
In the Linux kernel, the following vulnerability has been resolved:
migrate: correct lock ordering for hugetlb file folios
Syzbot has found a deadlock (analyzed by Lance Yang):
1) Task (5749): Holds folio_lock, then tries to acquire i_mmap_rwsem(read lock). 2) Task (5754): Holds i_mmap_rwsem(write lock), then tries to acquire folio_lock.
migrate_pages() -> migrate_hugetlbs() -> unmap_and_move_huge_page() <- Takes folio_lock! -> remove_migration_ptes() -> __rmap_walk_file() -> i_mmap_lock_read() <- Waits for i_mmap_rwsem(read lock)!
hugetlbfs_fallocate() -> hugetlbfs_punch_hole() <- Takes i_mmap_rwsem(write lock)! -> hugetlbfs_zero_partial_page() -> filemap_lock_hugetlb_folio() -> filemap_lock_folio() -> __filemap_get_folio <- Waits for folio_lock!
The migration path is the one taking locks in the wrong order according to the documentation at the top of mm/rmap.c. So expand the scope of the existing i_mmap_lock to cover the calls to remove_migration_ptes() too.
This is (mostly) how it used to be after commit c0d0381ade79. That was removed by 336bf30eb765 for both file & anon hugetlb pages when it should only have been removed for anon hugetlb pages.
Weakness: CWE-362
Which versions are affected by CVE-2026-23097?
It affects 1 product.
Linux distribution packages (40)
bpftool AlmaLinux:8 | All versions | 4.18.0-553.109.1.el8_10 |
kernel AlmaLinux:8 | All versions | 4.18.0-553.109.1.el8_10 |
kernel-abi-stablelists AlmaLinux:8 | All versions | 4.18.0-553.109.1.el8_10 |
kernel-core AlmaLinux:8 | All versions | 4.18.0-553.109.1.el8_10 |
kernel-cross-headers AlmaLinux:8 | All versions | 4.18.0-553.109.1.el8_10 |
kernel-debug AlmaLinux:8 | All versions | 4.18.0-553.109.1.el8_10 |
kernel-debug-core AlmaLinux:8 | All versions | 4.18.0-553.109.1.el8_10 |
kernel-debug-devel AlmaLinux:8 | All versions | 4.18.0-553.109.1.el8_10 |
kernel-debug-modules AlmaLinux:8 | All versions | 4.18.0-553.109.1.el8_10 |
kernel-debug-modules-extra AlmaLinux:8 | All versions | 4.18.0-553.109.1.el8_10 |
kernel-devel AlmaLinux:8 | All versions | 4.18.0-553.109.1.el8_10 |
kernel-doc AlmaLinux:8 | All versions | 4.18.0-553.109.1.el8_10 |
kernel-headers AlmaLinux:8 | All versions | 4.18.0-553.109.1.el8_10 |
kernel-modules AlmaLinux:8 | All versions | 4.18.0-553.109.1.el8_10 |
kernel-modules-extra AlmaLinux:8 | All versions | 4.18.0-553.109.1.el8_10 |
kernel-rt AlmaLinux:8 | All versions | 4.18.0-553.109.1.rt7.450.el8_10 |
kernel-rt-core AlmaLinux:8 | All versions | 4.18.0-553.109.1.rt7.450.el8_10 |
kernel-rt-debug AlmaLinux:8 | All versions | 4.18.0-553.109.1.rt7.450.el8_10 |
kernel-rt-debug-core AlmaLinux:8 | All versions | 4.18.0-553.109.1.rt7.450.el8_10 |
kernel-rt-debug-devel AlmaLinux:8 | All versions | 4.18.0-553.109.1.rt7.450.el8_10 |
kernel-rt-debug-modules AlmaLinux:8 | All versions | 4.18.0-553.109.1.rt7.450.el8_10 |
kernel-rt-debug-modules-extra AlmaLinux:8 | All versions | 4.18.0-553.109.1.rt7.450.el8_10 |
kernel-rt-devel AlmaLinux:8 | All versions | 4.18.0-553.109.1.rt7.450.el8_10 |
kernel-rt-modules AlmaLinux:8 | All versions | 4.18.0-553.109.1.rt7.450.el8_10 |
kernel-rt-modules-extra AlmaLinux:8 | All versions | 4.18.0-553.109.1.rt7.450.el8_10 |
kernel-tools AlmaLinux:8 | All versions | 4.18.0-553.109.1.el8_10 |
kernel-tools-libs AlmaLinux:8 | All versions | 4.18.0-553.109.1.el8_10 |
kernel-tools-libs-devel AlmaLinux:8 | All versions | 4.18.0-553.109.1.el8_10 |
kernel-zfcpdump AlmaLinux:8 | All versions | 4.18.0-553.109.1.el8_10 |
kernel-zfcpdump-core AlmaLinux:8 | All versions | 4.18.0-553.109.1.el8_10 |
kernel-zfcpdump-devel AlmaLinux:8 | All versions | 4.18.0-553.109.1.el8_10 |
kernel-zfcpdump-modules AlmaLinux:8 | All versions | 4.18.0-553.109.1.el8_10 |
kernel-zfcpdump-modules-extra AlmaLinux:8 | All versions | 4.18.0-553.109.1.el8_10 |
perf AlmaLinux:8 | All versions | 4.18.0-553.109.1.el8_10 |
python3-perf AlmaLinux:8 | All versions | 4.18.0-553.109.1.el8_10 |
bpftool Red Hat:enterprise_linux:8::baseos | All versions | 0:4.18.0-553.109.1.el8_10 |
bpftool-debuginfo Red Hat:enterprise_linux:8::baseos | All versions | 0:4.18.0-553.109.1.el8_10 |
kernel Red Hat:enterprise_linux:8::baseos | All versions | 0:4.18.0-553.109.1.el8_10 |
kernel-abi-stablelists Red Hat:enterprise_linux:8::baseos | All versions | 0:4.18.0-553.109.1.el8_10 |
kernel-core Red Hat:enterprise_linux:8::baseos | All versions | 0:4.18.0-553.109.1.el8_10 |
Products include Linux kernel.
How do I fix CVE-2026-23097?
Apply the vendor's patch.
Is CVE-2026-23097 being exploited?
There is no known exploitation of CVE-2026-23097 in the wild and no public exploit code.
Other vulnerabilities in Linux kernel
Sources
Also known as ALSA-2026:3463, ALSA-2026:3464, AZL-77181, BELL-CVE-2026-23097, DEBIAN-CVE-2026-23097, GHSA-3gqm-m375-7mp2 and 10 more.