Forum | Documentation | Website | Blog

Skip to content
Snippets Groups Projects
  • Jeff Xu's avatar
    mseal: add mseal syscall · 8be7258a
    Jeff Xu authored
    The new mseal() is an syscall on 64 bit CPU, and with following signature:
    
    int mseal(void addr, size_t len, unsigned long flags)
    addr/len: memory range.
    flags: reserved.
    
    mseal() blocks following operations for the given memory range.
    
    1> Unmapping, moving to another location, and shrinking the size,
       via munmap() and mremap(), can leave an empty space, therefore can
       be replaced with a VMA with a new set of attributes.
    
    2> Moving or expanding a different VMA into the current location,
       via mremap().
    
    3> Modifying a VMA via mmap(MAP_FIXED).
    
    4> Size expansion, via mremap(), does not appear to pose any specific
       risks to sealed VMAs. It is included anyway because the use case is
       unclear. In any case, users can rely on merging to expand a sealed VMA.
    
    5> mprotect() and pkey_mprotect().
    
    6> Some destructive madvice() behaviors (e.g. MADV_DONTNEED) for anonymous
       memory, when users don't have write permission to the memory. Those
       behaviors can alter region contents by...
    8be7258a