• Zhang, Yanmin's avatar
    [PATCH] mmap zero-length hugetlb file with PROT_NONE to protect a hugetlb virtual area · b6174df5
    Zhang, Yanmin authored
    Sometimes, applications need below call to be successful although
    "/mnt/hugepages/file1" doesn't exist.
    
    fd = open("/mnt/hugepages/file1", O_CREAT|O_RDWR, 0755);
    *addr = mmap(NULL, 0x1024*1024*256, PROT_NONE, 0, fd, 0);
    
    As for regular pages (or files), above call does work, but as for huge
    pages, above call would fail because hugetlbfs_file_mmap would fail if
    (!(vma->vm_flags & VM_WRITE) && len > inode->i_size).
    
    This capability on huge page is useful on ia64 when the process wants to
    protect one area on region 4, so other threads couldn't read/write this
    area.  A famous JVM (Java Virtual Machine) implementation on IA64 needs the
    capability.
    Signed-off-by: default avatarZhang Yanmin <yanmin.zhang@intel.com>
    Cc: David Gibson <david@gibson.dropbear.id.au>
    Cc: Hugh Dickins <hugh@veritas.com>
    [ Expand-on-mmap semantics again... this time matching normal fs's. wli ]
    Acked-by: default avatarWilliam Lee Irwin III <wli@holomorphy.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    b6174df5
inode.c 19.4 KB