In the Linux kernel, the following vulnerability has been resolved:
riscv: rewrite __kernel_map_pages() to fix sleeping in invalid context
__kernel_map_pages() is a debug function which clears the valid bit in page table entry for deallocated pages to detect illegal memory accesses to freed pages.
This function set/clear the valid bit using __set_memory(). __set_memory() acquires init_mm's semaphore, and this operation may sleep. This is problematic, because __kernel_map_pages() can be called in atomic context, and thus is illegal to sleep. An example warning that this causes:
BUG: sleeping function called from invalid context at kernel/locking/rwsem.c:1578 in_atomic(): 1, irqs_disabled(): 0, non_block: 0, pid: 2, name: kthreadd preempt_count: 2, expected: 0 CPU: 0 PID: 2 Comm: kthreadd Not tainted 6.9.0-g1d4c6d784ef6 #37 Hardware name: riscv-virtio,qemu (DT) Call Trace: [<ffffffff800060dc>] dump_backtrace+0x1c/0x24 [<ffffffff8091ef6e>] show_stack+0x2c/0x38 [<ffffffff8092baf8>] dump_stack_lvl+0x5a/0x72 [<ffffffff8092bb24>] dump_stack+0x14/0x1c [<ffffffff8003b7ac>] __might_resched+0x104/0x10e [<ffffffff8003b7f4>] __might_sleep+0x3e/0x62 [<ffffffff8093276a>] down_write+0x20/0x72 [<ffffffff8000cf00>] __set_memory+0x82/0x2fa [<ffffffff8000d324>] __kernel_map_pages+0x5a/0xd4 [<ffffffff80196cca>] __alloc_pages_bulk+0x3b2/0x43a [<ffffffff8018ee82>] __vmalloc_node_range+0x196/0x6ba [<ffffffff80011904>] copy_process+0x72c/0x17ec [<ffffffff80012ab4>] kernel_clone+0x60/0x2fe [<ffffffff80012f62>] kernel_thread+0x82/0xa0 [<ffffffff8003552c>] kthreadd+0x14a/0x1be [<ffffffff809357de>] ret_from_fork+0xe/0x1c
Rewrite this function with apply_to_existing_page_range(). It is fine to not have any locking, because __kernel_map_pages() works with pages being allocated/deallocated and those pages are not changed by anyone else in the meantime.
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 |
|---|---|---|---|---|
| Debian | — | Upgrade linuxUpgrade linux-6.1 | Jul 18, 2024 | Jul 12, 2024 |
| Ubuntu | — | Upgrade linux-image-raspiUpgrade linux-image-5.15.0-1078-azureUpgrade linux-image-oem-22.04bUpgrade linux-image-oem-22.04dUpgrade linux-image-nvidia-lowlatencyUpgrade linux-image-6.8.0-1012-ibmUpgrade linux-image-nvidia-64kUpgrade linux-image-intel-iotgUpgrade linux-image-azure-cvmUpgrade linux-image-generic-hwe-22.04Upgrade linux-image-virtual-hwe-20.04Upgrade linux-image-awsUpgrade linux-image-6.8.0-1013-nvidia-lowlatencyUpgrade linux-image-6.8.0-1013-nvidia-64kUpgrade linux-image-5.15.0-125-generic-64kUpgrade linux-image-nvidia-6.8Upgrade linux-image-generic-lpae-hwe-20.04Upgrade linux-image-azureUpgrade linux-image-generic-64kUpgrade linux-image-generic-hwe-24.04Upgrade linux-image-6.8.0-1012-oracleUpgrade linux-image-oracle-64kUpgrade linux-image-5.15.0-1075-azureUpgrade linux-image-5.15.0-1070-oracleUpgrade linux-image-6.8.0-45-generic-64kUpgrade linux-image-oracle-lts-22.04Upgrade linux-image-ibm-lts-24.04Upgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-generic-hwe-20.04Upgrade linux-image-azure-fdeUpgrade linux-image-oem-20.04cUpgrade linux-image-gke-5.15Upgrade linux-image-6.8.0-1013-nvidiaUpgrade linux-image-5.15.0-1038-xilinx-zynqmpUpgrade linux-image-6.8.0-1010-gkeUpgrade linux-image-oem-20.04bUpgrade linux-image-lowlatency-64kUpgrade linux-image-5.15.0-1065-raspiUpgrade linux-image-oracleUpgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-gkeopUpgrade linux-image-5.15.0-1067-nvidia-lowlatencyUpgrade linux-image-6.8.0-1013-nvidia-lowlatency-64kUpgrade linux-image-generic-lpaeUpgrade linux-image-5.15.0-1071-gcpUpgrade linux-image-gkeUpgrade linux-image-5.15.0-1067-nvidiaUpgrade linux-image-ibmUpgrade linux-image-virtual-hwe-24.04Upgrade linux-image-oem-22.04Upgrade linux-image-azure-lts-22.04Upgrade linux-image-nvidiaUpgrade linux-image-6.8.0-1015-awsUpgrade linux-image-5.15.0-125-generic-lpaeUpgrade linux-image-6.8.0-1012-oracle-64kUpgrade linux-image-aws-lts-22.04Upgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-lowlatency-hwe-20.04Upgrade linux-image-6.8.0-44-lowlatencyUpgrade linux-image-6.8.0-1014-azureUpgrade linux-image-raspi-nolpaeUpgrade linux-image-5.15.0-125-genericUpgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-lowlatency-64k-hwe-20.04Upgrade linux-image-5.15.0-1055-gkeopUpgrade linux-image-5.15.0-1072-awsUpgrade linux-image-ibm-classicUpgrade linux-image-generic-64k-hwe-20.04Upgrade linux-image-5.15.0-125-lowlatency-64kUpgrade linux-image-5.15.0-1065-ibmUpgrade linux-image-5.15.0-1069-gkeUpgrade linux-image-lowlatencyUpgrade linux-image-gcpUpgrade linux-image-virtualUpgrade linux-image-nvidia-64k-6.8Upgrade linux-image-genericUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-6.8.0-45-genericUpgrade linux-image-oem-20.04Upgrade linux-image-oem-22.04aUpgrade linux-image-gcp-lts-22.04Upgrade linux-image-gkeop-5.15Upgrade linux-image-5.15.0-1069-kvmUpgrade linux-image-6.8.0-44-genericUpgrade linux-image-6.8.0-1012-oemUpgrade linux-image-oem-22.04cUpgrade linux-image-6.8.0-44-generic-64kUpgrade linux-image-virtual-hwe-22.04Upgrade linux-image-6.8.0-1011-raspiUpgrade linux-image-6.8.0-1014-azure-fdeUpgrade linux-image-kvmUpgrade linux-image-5.15.0-125-lowlatencyUpgrade linux-image-intelUpgrade linux-image-xilinx-zynqmpUpgrade linux-image-5.15.0-1067-intel-iotgUpgrade linux-image-6.8.0-44-lowlatency-64kUpgrade linux-image-6.8.0-1014-gcpUpgrade linux-image-oem-20.04d | Sep 12, 2024 | Jul 12, 2024 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Oct 9, 2025 | Jul 12, 2024 |
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