Re: uvm_unmap() vs. uvm_deallocate()

tzsz <[email protected]>
Newsgroups gmane.os.netbsd.devel.kernel
Message-ID <[email protected]>
Hello Stephan,

uvm_deallocate is a wrapper for uvm_unmap. It calls unmap after checking 
3 things:

- size is not 0
- address starts at a page. If not, it is rounded
- address + size is at the end of a page, otherwise, size is also rounded

A thing to look out for here is that unmap takes a pointer to the end 
while deallocate uses the size instead and it is not possible to set the 
flags using deallocate.

 From what I understand in regard to sys_shmdt (sysv_shm.c), the address 
in this case cannot be influenced by the user/userland. This would make 
the checks introduced by deallocate not necessary.

Kind regards


Am 13.01.25 um 14:06 schrieb Stephan:
> Hello,
>
> what is the difference between uvm_unmap() and uvm_deallocate()?
>
> It does not become clear to me from what is written in uvm_map(9):
>
>
> uvm_unmap() removes a valid mapping, from start to end, in map map, which
>       must be unlocked.
>
> uvm_deallocate() deallocates kernel memory in map map from address start
>       to start + size.
>
>
> uvm_deallocate() is used e.g. in sysv_shm.c, in which case I would
> have expected uvm_unmap().
>
>
> Thanks,
>
> Stephan
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.