bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2 gnumach] vm_map: Add comment and assert for vm_map_delete


From: Samuel Thibault
Subject: Re: [PATCH v2 gnumach] vm_map: Add comment and assert for vm_map_delete
Date: Fri, 23 Feb 2024 14:15:10 +0100
User-agent: NeoMutt/20170609 (1.8.3)

Applied, thanks!

Damien Zammit, le ven. 23 févr. 2024 08:15:11 +0000, a ecrit:
> This will prevent calling vm_map_delete without the map locked
> unless ref_count is zero.
> ---
>  vm/vm_map.c | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/vm/vm_map.c b/vm/vm_map.c
> index c237afbe..7db76b7b 100644
> --- a/vm/vm_map.c
> +++ b/vm/vm_map.c
> @@ -551,10 +551,12 @@ void vm_map_deallocate(vm_map_t map)
>       c = --map->ref_count;
>       simple_unlock(&map->ref_lock);
>  
> +     /* Check the refcount */
>       if (c > 0) {
>               return;
>       }
>  
> +     /* If no more references, call vm_map_delete without locking the map */
>       projected_buffer_collect(map);
>       (void) vm_map_delete(map, map->min_offset, map->max_offset);
>  
> @@ -2028,6 +2030,11 @@ kern_return_t vm_map_delete(
>       if (map->pmap == kernel_pmap && (start < kernel_virtual_start || end > 
> kernel_virtual_end))
>               panic("vm_map_delete(%lx-%lx) falls in physical memory 
> area!\n", (unsigned long) start, (unsigned long) end);
>  
> +     /*
> +      *      Must be called with map lock taken unless refcount is zero
> +      */
> +     assert((map->ref_count > 0 && have_lock(map->lock)) || (map->ref_count 
> == 0));
> +
>       /*
>        *      Find the start of the region, and clip it
>        */
> -- 
> 2.43.0
> 
> 
> 

-- 
Samuel
---
Pour une évaluation indépendante, transparente et rigoureuse !
Je soutiens la Commission d'Évaluation de l'Inria.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]