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