Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mm, doc: cleanup and clarify munmap behavior for hugetlb memory

munmap(2) of hugetlb memory requires a length that is hugepage aligned,
otherwise it may fail. Add this to the documentation.

This also cleans up the documentation and separates it into logical units:
one part refers to MAP_HUGETLB and another part refers to requirements for
shared memory segments.

Signed-off-by: David Rientjes <rientjes@google.com>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Davide Libenzi <davidel@xmailserver.org>
Cc: Luiz Capitulino <lcapitulino@redhat.com>
Cc: Shuah Khan <shuahkh@osg.samsung.com>
Acked-by: Hugh Dickins <hughd@google.com>
Cc: Andrea Arcangeli <aarcange@redhat.com>
Cc: Joern Engel <joern@logfs.org>
Cc: Jianguo Wu <wujianguo@huawei.com>
Cc: Eric B Munson <emunson@akamai.com>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

David Rientjes and committed by
Linus Torvalds
80d6b94b ae7efa50

+16 -8
+16 -8
Documentation/vm/hugetlbpage.txt
··· 302 302 Regular chown, chgrp, and chmod commands (with right permissions) could be 303 303 used to change the file attributes on hugetlbfs. 304 304 305 - Also, it is important to note that no such mount command is required if the 305 + Also, it is important to note that no such mount command is required if 306 306 applications are going to use only shmat/shmget system calls or mmap with 307 - MAP_HUGETLB. Users who wish to use hugetlb page via shared memory segment 308 - should be a member of a supplementary group and system admin needs to 309 - configure that gid into /proc/sys/vm/hugetlb_shm_group. It is possible for 310 - same or different applications to use any combination of mmaps and shm* 311 - calls, though the mount of filesystem will be required for using mmap calls 312 - without MAP_HUGETLB. For an example of how to use mmap with MAP_HUGETLB see 313 - map_hugetlb.c. 307 + MAP_HUGETLB. For an example of how to use mmap with MAP_HUGETLB see map_hugetlb 308 + below. 309 + 310 + Users who wish to use hugetlb memory via shared memory segment should be a 311 + member of a supplementary group and system admin needs to configure that gid 312 + into /proc/sys/vm/hugetlb_shm_group. It is possible for same or different 313 + applications to use any combination of mmaps and shm* calls, though the mount of 314 + filesystem will be required for using mmap calls without MAP_HUGETLB. 315 + 316 + Syscalls that operate on memory backed by hugetlb pages only have their lengths 317 + aligned to the native page size of the processor; they will normally fail with 318 + errno set to EINVAL or exclude hugetlb pages that extend beyond the length if 319 + not hugepage aligned. For example, munmap(2) will fail if memory is backed by 320 + a hugetlb page and the length is smaller than the hugepage size. 321 + 314 322 315 323 Examples 316 324 ========