works for me.

On 2011/04/19 09:49, Artur Grabowski wrote:
> Free the correct memory when we failed to allocate va.
> 
> //art
> 
> Index: uvm/uvm_km.c
> ===================================================================
> RCS file: /cvs/src/sys/uvm/uvm_km.c,v
> retrieving revision 1.97
> diff -u -r1.97 uvm_km.c
> --- uvm/uvm_km.c      18 Apr 2011 19:23:46 -0000      1.97
> +++ uvm/uvm_km.c      19 Apr 2011 15:46:45 -0000
> @@ -928,7 +928,8 @@
>               while (uvm_km_pages.free == 0) {
>                       if (kd->kd_waitok == 0) {
>                               mtx_leave(&uvm_km_pages.mtx);
> -                             uvm_pagefree(pg);
> +                             if (!TAILQ_EMPTY(&pgl))
> +                                     uvm_pglistfree(&pgl);
>                               return NULL;
>                       }
>                       msleep(&uvm_km_pages.free, &uvm_km_pages.mtx, PVM,
> @@ -961,6 +962,8 @@
>                               tsleep(map, PVM, "km_allocva", 0);
>                               goto try_map;
>                       }
> +                     if (!TAILQ_EMPTY(&pgl))
> +                             uvm_pglistfree(&pgl);
>                       return (NULL);
>               }
>       }

Reply via email to