• David Herrmann's avatar
    shm: add memfd_create() syscall · 9183df25
    David Herrmann authored
    memfd_create() is similar to mmap(MAP_ANON), but returns a file-descriptor
    that you can pass to mmap().  It can support sealing and avoids any
    connection to user-visible mount-points.  Thus, it's not subject to quotas
    on mounted file-systems, but can be used like malloc()'ed memory, but with
    a file-descriptor to it.
    
    memfd_create() returns the raw shmem file, so calls like ftruncate() can
    be used to modify the underlying inode.  Also calls like fstat() will
    return proper information and mark the file as regular file.  If you want
    sealing, you can specify MFD_ALLOW_SEALING.  Otherwise, sealing is not
    supported (like on all other regular files).
    
    Compared to O_TMPFILE, it does not require a tmpfs mount-point and is not
    subject to a filesystem size limit.  It is still properly accounted to
    memcg limits, though, and to the same overcommit or no-overcommit
    accounting as all user memory.
    Signed-off-by: default avatarDavid Herrmann <dh.herrmann@gmail.com>
    Acked-by: default avatarHugh Dickins <hughd@google.com>
    Cc: Michael Kerrisk <mtk.manpages@gmail.com>
    Cc: Ryan Lortie <desrt@desrt.ca>
    Cc: Lennart Poettering <lennart@poettering.net>
    Cc: Daniel Mack <zonque@gmail.com>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    9183df25
shmem.c 85.4 KB