CVE-2024-56628
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
27/12/2024
Last modified:
03/11/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
LoongArch: Add architecture specific huge_pte_clear()<br />
<br />
When executing mm selftests run_vmtests.sh, there is such an error:<br />
<br />
BUG: Bad page state in process uffd-unit-tests pfn:00000<br />
page: refcount:0 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x0<br />
flags: 0xffff0000002000(reserved|node=0|zone=0|lastcpupid=0xffff)<br />
raw: 00ffff0000002000 ffffbf0000000008 ffffbf0000000008 0000000000000000<br />
raw: 0000000000000000 0000000000000000 00000000ffffffff 0000000000000000<br />
page dumped because: PAGE_FLAGS_CHECK_AT_FREE flag(s) set<br />
Modules linked in: snd_seq_dummy snd_seq snd_seq_device rfkill vfat fat<br />
virtio_balloon efi_pstore virtio_net pstore net_failover failover fuse<br />
nfnetlink virtio_scsi virtio_gpu virtio_dma_buf dm_multipath efivarfs<br />
CPU: 2 UID: 0 PID: 1913 Comm: uffd-unit-tests Not tainted 6.12.0 #184<br />
Hardware name: QEMU QEMU Virtual Machine, BIOS unknown 2/2/2022<br />
Stack : 900000047c8ac000 0000000000000000 9000000000223a7c 900000047c8ac000<br />
900000047c8af690 900000047c8af698 0000000000000000 900000047c8af7d8<br />
900000047c8af7d0 900000047c8af7d0 900000047c8af5b0 0000000000000001<br />
0000000000000001 900000047c8af698 10b3c7d53da40d26 0000010000000000<br />
0000000000000022 0000000fffffffff fffffffffe000000 ffff800000000000<br />
000000000000002f 0000800000000000 000000017a6d4000 90000000028f8940<br />
0000000000000000 0000000000000000 90000000025aa5e0 9000000002905000<br />
0000000000000000 90000000028f8940 ffff800000000000 0000000000000000<br />
0000000000000000 0000000000000000 9000000000223a94 000000012001839c<br />
00000000000000b0 0000000000000004 0000000000000000 0000000000071c1d<br />
...<br />
Call Trace:<br />
[] show_stack+0x5c/0x180<br />
[] dump_stack_lvl+0x6c/0xa0<br />
[] bad_page+0x1a0/0x1f0<br />
[] free_unref_folios+0xbf0/0xd20<br />
[] folios_put_refs+0x1a4/0x2b8<br />
[] free_pages_and_swap_cache+0x164/0x260<br />
[] tlb_batch_pages_flush+0xa8/0x1c0<br />
[] tlb_finish_mmu+0xa8/0x218<br />
[] exit_mmap+0x1a0/0x360<br />
[] __mmput+0x78/0x200<br />
[] do_exit+0x43c/0xde8<br />
[] do_group_exit+0x68/0x110<br />
[] sys_exit_group+0x1c/0x20<br />
[] do_syscall+0x94/0x130<br />
[] handle_syscall+0xb8/0x158<br />
Disabling lock debugging due to kernel taint<br />
BUG: non-zero pgtables_bytes on freeing mm: -16384<br />
<br />
On LoongArch system, invalid huge pte entry should be invalid_pte_table<br />
or a single _PAGE_HUGE bit rather than a zero value. And it should be<br />
the same with invalid pmd entry, since pmd_none() is called by function<br />
free_pgd_range() and pmd_none() return 0 by huge_pte_clear(). So single<br />
_PAGE_HUGE bit is also treated as a valid pte table and free_pte_range()<br />
will be called in free_pmd_range().<br />
<br />
free_pmd_range()<br />
pmd = pmd_offset(pud, addr);<br />
do {<br />
next = pmd_addr_end(addr, end);<br />
if (pmd_none_or_clear_bad(pmd))<br />
continue;<br />
free_pte_range(tlb, pmd, addr);<br />
} while (pmd++, addr = next, addr != end);<br />
<br />
Here invalid_pte_table is used for both invalid huge pte entry and<br />
pmd entry.
Impact
Base Score 3.x
7.80
Severity 3.x
HIGH
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.19 (including) | 6.1.120 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.2 (including) | 6.6.66 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.7 (including) | 6.12.5 (excluding) |
| cpe:2.3:o:linux:linux_kernel:6.13:rc1:*:*:*:*:*:* |
To consult the complete list of CPE names with products and versions, see this page
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/7cd1f5f77925ae905a57296932f0f9ef0dc364f8
- https://git.kernel.org/stable/c/7dfbf011a57b9e1a40f5ce8080a53c497e105c6c
- https://git.kernel.org/stable/c/9b602190cf2d8ac957be0011e418ed6c3b49b9a3
- https://git.kernel.org/stable/c/dba3c45e333a3a2a01395b5f5e5f88f8baba74e4
- https://lists.debian.org/debian-lts-announce/2025/03/msg00001.html



