Applied, thanks!

Mike Kelly, le sam. 28 févr. 2026 20:54:15 +0000, a ecrit:
> A non-empty CPU page pool always allocates pages even when
> vm_page_alloc_paused is set. An unprivileged thread can therefore
> acquire a signicant number of pages until the pool is empty. The cycle
> can continue for a longer period if the pool is replenished by a VM
> privileged thread before the unprivileged thread requests more pages
> and in extreme cases can result in complete system memory exhaustion.
> ---
>  vm/vm_page.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/vm/vm_page.c b/vm/vm_page.c
> index 47eeb042..5cdf0c7b 100644
> --- a/vm/vm_page.c
> +++ b/vm/vm_page.c
> @@ -687,6 +687,11 @@ vm_page_seg_alloc(struct vm_page_seg *seg, unsigned int 
> order,
>      assert(order < VM_PAGE_NR_FREE_LISTS);
>  
>      if (order == 0) {
> +
> +        if (vm_page_alloc_paused && current_thread()
> +         && !current_thread()->vm_privilege)
> +       return NULL;
> +
>          thread_pin();
>          cpu_pool = vm_page_cpu_pool_get(seg);
>          simple_lock(&cpu_pool->lock);
> -- 
> 2.47.3
> 
> 

-- 
Samuel
<y> le y est un animal discret se logeant facilement dans un terminal
*** c has changed the topic on channel #ens-mim to ne pas jeter de cacahuetes 
aux ys, svp
 -+- #ens-mim - n'oubliez pas le guide -+-

Reply via email to