Description
In the Linux kernel, the following vulnerability has been resolved: mm/vmalloc: fix page mapping if vm_area_alloc_pages() with high order fallback to order 0 The __vmap_pages_range_noflush() assumes its argument pages** contains pages with the same page shift. However, since commit e9c3cda4d86e ("mm, vmalloc: fix high order __GFP_NOFAIL allocations"), if gfp_flags includes __GFP_NOFAIL with high order in vm_area_alloc_pages() and page allocation failed for high order, the pages** may contain two different page shifts (high order and order-0). This could lead __vmap_pages_range_noflush() to perform incorrect mappings, potentially resulting in memory corruption. Users might encounter this as follows (vmap_allow_huge = true, 2M is for PMD_SIZE): kvmalloc(2M, __GFP_NOFAIL|GFP_X) __vmalloc_node_range_noprof(vm_flags=VM_ALLOW_HUGE_VMAP) vm_area_alloc_pages(order=9) ---> order-9 allocation failed and fallback to order-0 vmap_pages_range() vmap_pages_range_noflush() __vmap_pages_range_noflush(page_shift = 21) ----> wrong mapping happens We can remove the fallback code because if a high-order allocation fails, __vmalloc_node_range_noprof() will retry with order-0. Therefore, it is unnecessary to fallback to order-0 here. Therefore, fix this by removing the fallback code.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
fe5c2bdcb14c8612eb5e7a09159801c7219e9ac4 to < fd1ffbb50ef4da5e1378a46616b6d7407dc795daaffectede9c3cda4d86e56bf7fe403729f38c4f0f65d3860 to < de7bad86345c43cd040ed43e20d9fad78a3ee59faffectede9c3cda4d86e56bf7fe403729f38c4f0f65d3860 to < c91618816f4d21fc574d7577a37722adcd4075b2affectede9c3cda4d86e56bf7fe403729f38c4f0f65d3860 to < 61ebe5a747da649057c37be1c37eb934b4af79caaffected6.1.95 to < 6.1.107affected
Linux Linux
Default version status: affected
6.3affected0 to < 6.3unaffected6.1.107 to ≤ 6.1.*unaffected6.6.48 to ≤ 6.6.*unaffected6.10.7 to ≤ 6.10.*unaffected6.11 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/fd1ffbb50ef4da5e1378a46616b6d7407dc795da ↗
- https://git.kernel.org/stable/c/de7bad86345c43cd040ed43e20d9fad78a3ee59f ↗
- https://git.kernel.org/stable/c/c91618816f4d21fc574d7577a37722adcd4075b2 ↗
- https://git.kernel.org/stable/c/61ebe5a747da649057c37be1c37eb934b4af79ca ↗
- https://lists.debian.org/debian-lts-announce/2025/01/msg00001.html ↗