In the Linux kernel, the following vulnerability has been resolved:
mm/ksm: fix flag-dropping behavior in ksm_madvise
syzkaller discovered the following crash: (kernel BUG)
[ 44.607039] ------------[ cut here ]------------ [ 44.607422] kernel BUG at mm/userfaultfd.c:2067! [ 44.608148] Oops: invalid opcode: 0000 [#1] SMP DEBUG_PAGEALLOC KASAN NOPTI [ 44.608814] CPU: 1 UID: 0 PID: 2475 Comm: reproducer Not tainted 6.16.0-rc6 #1 PREEMPT(none) [ 44.609635] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org 04/01/2014 [ 44.610695] RIP: 0010:userfaultfd_release_all+0x3a8/0x460
<snip other registers, drop unreliable trace>
[ 44.617726] Call Trace: [ 44.617926] <TASK> [ 44.619284] userfaultfd_release+0xef/0x1b0 [ 44.620976] __fput+0x3f9/0xb60 [ 44.621240] fput_close_sync+0x110/0x210 [ 44.622222] __x64_sys_close+0x8f/0x120 [ 44.622530] do_syscall_64+0x5b/0x2f0 [ 44.622840] entry_SYSCALL_64_after_hwframe+0x76/0x7e [ 44.623244] RIP: 0033:0x7f365bb3f227
Kernel panics because it detects UFFD inconsistency during userfaultfd_release_all(). Specifically, a VMA which has a valid pointer to vma->vm_userfaultfd_ctx, but no UFFD flags in vma->vm_flags.
The inconsistency is caused in ksm_madvise(): when user calls madvise() with MADV_UNMEARGEABLE on a VMA that is registered for UFFD in MINOR mode, it accidentally clears all flags stored in the upper 32 bits of vma->vm_flags.
Assuming x86_64 kernel build, unsigned long is 64-bit and unsigned int and int are 32-bit wide. This setup causes the following mishap during the &= ~VM_MERGEABLE assignment.
VM_MERGEABLE is a 32-bit constant of type unsigned int, 0x8000'0000. After ~ is applied, it becomes 0x7fff'ffff unsigned int, which is then promoted to unsigned long before the & operation. This promotion fills upper 32 bits with leading 0s, as we're doing unsigned conversion (and even for a signed conversion, this wouldn't help as the leading bit is 0). & operation thus ends up AND-ing vm_flags with 0x0000'0000'7fff'ffff instead of intended 0xffff'ffff'7fff'ffff and hence accidentally clears the upper 32-bits of its value.
Fix it by changing `VM_MERGEABLE` constant to unsigned long, using the BIT() macro.
Note: other VM_* flags are not affected: This only happens to the VM_MERGEABLE flag, as the other VM_* flags are all constants of type int and after ~ operation, they end up with leading 1 and are thus converted to unsigned long with leading 1s.
Note 2: After commit 31defc3b01d9 ("userfaultfd: remove (VM_)BUG_ON()s"), this is no longer a kernel BUG, but a WARNING at the same place:
[ 45.595973] WARNING: CPU: 1 PID: 2474 at mm/userfaultfd.c:2067
but the root-cause (flag-drop) remains the same.
[[email protected]: rust bindgen wasn't able to handle BIT(), from Miguel]
CVSS Details
- CVSS 3.1 Base Score: 7.8
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Amazon Linux Ami 2 | — | Upgrade bpftool-debuginfoUpgrade kernel-toolsUpgrade perf-debuginfoUpgrade kernel-livepatch-5.15.197-138.220Upgrade kernel-develUpgrade kernel-tools-develUpgrade kernel-debuginfo-common-aarch64Upgrade perfUpgrade python-perfUpgrade bpftoolUpgrade python-perf-debuginfoUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-headersUpgrade kernel-tools-debuginfoUpgrade kernelUpgrade kernel-debuginfo | May 20, 2026 | May 20, 2026 |
| Amazon_linux_2023 | — | Upgrade bpftool-debuginfoUpgrade bpftool6.12Upgrade kernel-debuginfo-common-x86_64Upgrade kernel-headersUpgrade kernel6.12Upgrade kernel-libbpf-debuginfoUpgrade kernel-livepatch-6.12.55-74.119Upgrade kernel6.12-headersUpgrade kernel-libbpf-staticUpgrade kernel6.12-libbpf-debuginfoUpgrade kernel6.12-libbpf-develUpgrade kernel-modules-extra-commonUpgrade perf6.12Upgrade kernel-toolsUpgrade python3-perf6.12-debuginfoUpgrade kernel-libbpfUpgrade kernelUpgrade perf-debuginfoUpgrade kernel6.12-tools-debuginfoUpgrade kernel-tools-develUpgrade kernel-debuginfoUpgrade kernel-livepatch-6.1.158-178.288Upgrade kernel6.12-modules-extra-commonUpgrade kernel6.12-debuginfoUpgrade kernel6.12-toolsUpgrade bpftool6.12-debuginfoUpgrade python3-perf6.12Upgrade python3-perf-debuginfoUpgrade bpftoolUpgrade kernel-tools-debuginfoUpgrade kernel-modules-extraUpgrade kernel6.12-debuginfo-common-aarch64Upgrade kernel-develUpgrade perf6.12-debuginfoUpgrade kernel6.12-libbpfUpgrade kernel6.12-tools-develUpgrade kernel6.12-libbpf-staticUpgrade kernel-libbpf-develUpgrade kernel6.12-modules-extraUpgrade kernel-debuginfo-common-aarch64Upgrade python3-perfUpgrade perfUpgrade kernel6.12-develUpgrade kernel6.12-debuginfo-common-x86_64 | Dec 9, 2025 | Oct 28, 2025 |
| Debian | — | Upgrade linuxUpgrade linux-6.1 | Nov 13, 2025 | Nov 13, 2025 |
| Oracle_linux | — | Upgrade kernel-uek | Dec 11, 2025 | Oct 28, 2025 |
| Redhat_linux | — | No solution exists | Jul 17, 2026 | Oct 28, 2025 |
| Ubuntu | — | Upgrade linux-image-nvidia-tegra-rt-6.8Upgrade linux-image-xilinx-zynqmpUpgrade linux-image-5.15.0-1044-nvidia-tegra-igx-rtUpgrade linux-image-azure-lts-22.04Upgrade linux-image-raspi-6.17Upgrade linux-image-gkeopUpgrade linux-image-intelUpgrade linux-image-aws-5.15Upgrade linux-image-nvidiaUpgrade linux-image-5.15.0-1098-nvidiaUpgrade linux-image-5.15.0-1067-xilinx-zynqmpUpgrade linux-image-5.15.0-1109-azure-fipsUpgrade linux-image-aws-lts-22.04Upgrade linux-image-5.15.0-1098-intel-iotgUpgrade linux-image-5.15.0-1099-gkeUpgrade linux-image-oem-20.04bUpgrade linux-image-oem-20.04cUpgrade linux-image-realtimeUpgrade linux-image-kvm-5.15Upgrade linux-image-lowlatency-64k-5.15Upgrade linux-image-nvidia-tegra-igx-5.15Upgrade linux-image-nvidia-tegraUpgrade linux-image-gcpUpgrade linux-image-aws-6.17Upgrade linux-image-virtual-5.15Upgrade linux-image-5.15.0-173-generic-lpaeUpgrade linux-image-aws-64k-lts-22.04Upgrade linux-image-intel-iotgUpgrade linux-image-nvidia-tegra-5.15Upgrade linux-image-generic-64k-hwe-20.04Upgrade linux-image-5.15.0-1109-azureUpgrade linux-image-generic-64kUpgrade linux-image-oem-20.04dUpgrade linux-image-azure-fips-5.15Upgrade linux-image-5.15.0-173-lowlatency-64kUpgrade linux-image-generic-lpae-5.15Upgrade linux-image-nvidia-tegra-igx-rtUpgrade linux-image-virtualUpgrade linux-image-5.15.0-1095-kvmUpgrade linux-image-aws-64kUpgrade linux-image-5.15.0-1100-oracleUpgrade linux-image-6.8.0-1035-nvidia-tegra-rtUpgrade linux-image-5.15.0-1110-azureUpgrade linux-image-realtime-5.15Upgrade linux-image-5.15.0-173-genericUpgrade linux-image-oracleUpgrade linux-image-oracle-64kUpgrade linux-image-xilinx-zynqmp-5.15Upgrade linux-image-intel-iot-realtimeUpgrade linux-image-fips-5.15Upgrade linux-image-intel-iotg-5.15Upgrade linux-image-5.15.0-173-lowlatencyUpgrade linux-image-6.17.0-14-generic-64kUpgrade linux-image-6.17.0-1011-oemUpgrade linux-image-generic-lpae-hwe-20.04Upgrade linux-image-genericUpgrade linux-image-6.17.0-1006-realtimeUpgrade linux-image-virtual-6.17Upgrade linux-image-5.15.0-1097-raspiUpgrade linux-image-5.15.0-1055-nvidia-tegraUpgrade linux-image-oem-20.04Upgrade linux-image-lowlatency-64kUpgrade linux-image-gkeUpgrade linux-image-lowlatency-5.15Upgrade linux-image-nvidia-5.15Upgrade linux-image-realtime-6.17Upgrade linux-image-oracle-lts-22.04Upgrade linux-image-6.17.0-1007-gcpUpgrade linux-image-azure-cvmUpgrade linux-image-lowlatency-64k-hwe-20.04Upgrade linux-image-virtual-hwe-20.04Upgrade linux-image-gcp-64kUpgrade linux-image-azureUpgrade linux-image-5.15.0-1102-realtimeUpgrade linux-image-nvidia-lowlatency-5.15Upgrade linux-image-generic-64k-6.17Upgrade linux-image-gcp-fipsUpgrade linux-image-5.15.0-1098-nvidia-lowlatencyUpgrade linux-image-6.17.0-1007-oracleUpgrade linux-image-azure-fipsUpgrade linux-image-generic-5.15Upgrade linux-image-oracle-6.17Upgrade linux-image-azure-5.15Upgrade linux-image-awsUpgrade linux-image-aws-fipsUpgrade linux-image-5.15.0-173-fipsUpgrade linux-image-gcp-6.17Upgrade linux-image-intel-iot-realtime-5.15Upgrade linux-image-oem-6.17Upgrade linux-image-5.15.0-1103-aws-64kUpgrade linux-image-6.17.0-1008-raspiUpgrade linux-image-azure-6.17Upgrade linux-image-raspi-5.15Upgrade linux-image-6.17.0-1008-azureUpgrade linux-image-6.17.0-1007-gcp-64kUpgrade linux-image-6.17.0-1007-awsUpgrade linux-image-5.15.0-1097-ibmUpgrade linux-image-raspi-nolpaeUpgrade linux-image-gkeop-5.15Upgrade linux-image-lowlatency-hwe-20.04Upgrade linux-image-generic-lpaeUpgrade linux-image-generic-64k-5.15Upgrade linux-image-gcp-fips-5.15Upgrade linux-image-aws-64k-6.17Upgrade linux-image-6.8.0-1035-nvidia-tegraUpgrade linux-image-5.15.0-1103-gcp-fipsUpgrade linux-image-5.15.0-1103-awsUpgrade linux-image-nvidia-tegra-igx-rt-5.15Upgrade linux-image-nvidia-tegra-6.8Upgrade linux-image-6.17.0-14-genericUpgrade linux-image-generic-6.17Upgrade linux-image-nvidia-tegra-igxUpgrade linux-image-raspiUpgrade linux-image-gcp-5.15Upgrade linux-image-ibm-5.15Upgrade linux-image-fipsUpgrade linux-image-oracle-64k-6.17Upgrade linux-image-ibmUpgrade linux-image-5.15.0-1094-intel-iot-realtimeUpgrade linux-image-kvmUpgrade linux-image-5.15.0-1055-nvidia-tegra-rtUpgrade linux-image-nvidia-lowlatencyUpgrade linux-image-6.17.0-1007-oracle-64kUpgrade linux-image-5.15.0-1044-nvidia-tegra-igxUpgrade linux-image-6.17.0-1007-aws-64kUpgrade linux-image-5.15.0-173-generic-64kUpgrade linux-image-5.15.0-1103-aws-fipsUpgrade linux-image-oracle-5.15Upgrade linux-image-gke-5.15Upgrade linux-image-nvidia-tegra-rt-5.15Upgrade linux-image-lowlatencyUpgrade linux-image-generic-hwe-20.04Upgrade linux-image-5.15.0-1086-gkeopUpgrade linux-image-5.15.0-1103-gcpUpgrade linux-image-aws-fips-5.15Upgrade linux-image-nvidia-tegra-rtUpgrade linux-image-gcp-lts-22.04Upgrade linux-image-aws-64k-5.15Upgrade linux-image-gcp-64k-6.17 | Feb 13, 2026 | Feb 12, 2026 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Feb 9, 2026 | Oct 28, 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