Hello, Please also add printing size_null in vm_map_print.
dnie...@gmail.com, le mer. 25 déc. 2024 16:16:06 -0300, a ecrit: > @@ -1160,6 +1226,8 @@ kern_return_t vm_map_enter( > > vm_map_entry_link(map, entry, new_entry); > map->size += size; > + if (max_protection == VM_PROT_NONE) > + map->size_none += size; > > /* > * Update the free space hint and the lookup hint In vm_map_enter, there are two other incrementations of map->size above, in the coalescing cases: if the coalescing happens with a max_prot = NONE entry we need to increase size_none two. > @@ -1679,11 +1747,13 @@ kern_return_t vm_map_protect( > vm_map_clip_end(map, current, end); > > old_prot = current->protection; > - if (set_max) > + if (set_max) { > + if (current->max_protection != new_prot && new_prot == > VM_PROT_NONE) > + map->size_none += current->vme_end - > current->vme_start; You also need to take into account the case where current->max_protection was NONE and new_prot is not NONE, you then have to decrease size_none. > current->protection = > (current->max_protection = new_prot) & > old_prot; > - else > + } else > current->protection = new_prot; > > /* It seems there is also an occurrence of changing max_protection in projected_buffer_allocate and projected_buffer_map > @@ -3055,6 +3136,11 @@ kern_return_t vm_map_copyout_page_list( > > vm_map_lock(dst_map); > > + if ((result = vm_map_enforce_limit(dst_map, size, > "vm_map_copyout_page_lists")) != KERN_SUCCESS) { > + vm_map_unlock(dst_map); > + return result; > + } > + For coherency with others, put it after checking against last == NULL below? > last = vm_map_find_entry_anywhere(dst_map, size, 0, TRUE, &start); > > if (last == NULL) { Please also add a note about not updating size_null just like you did for vm_map_copyout. > @@ -582,4 +587,12 @@ void _vm_map_clip_end( > vm_offset_t end, > boolean_t link_gap); > > +/* > + * This function is called to inherit the virtual memory limits > + * from one vm_map_t to another. > + */ > +void vm_map_copy_limits( > + vm_map_t src, > + vm_map_t dst); I'd say rather exchange src and dst, to have it ordered like in memcpy. Samuel