On 07/21/2015 05:41 PM, David Rientjes wrote:
munmap(2) will fail with an errno of EINVAL for hugetlb memory if the length is not a multiple of the underlying page size. Documentation/vm/hugetlbpage.txt was updated to specify this behavior since Linux 4.1 in commit 80d6b94bd69a ("mm, doc: cleanup and clarify munmap behavior for hugetlb memory"). Signed-off-by: David Rientjes <rientjes@xxxxxxxxxx> --- man2/mmap.2 | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/man2/mmap.2 b/man2/mmap.2 --- a/man2/mmap.2 +++ b/man2/mmap.2 @@ -383,6 +383,10 @@ All pages containing a part of the indicated range are unmapped, and subsequent references to these pages will generate .BR SIGSEGV . +An exception is when the underlying memory is not of the native page +size, such as hugetlb page sizes, whereas +.I length +must be a multiple of the underlying page size. It is not an error if the indicated range does not contain any mapped pages. .SS Timestamps changes for file-backed mappings --
Should we also add a similar comment for the mmap offset? Currently the man page says: "offset must be a multiple of the page size as returned by sysconf(_SC_PAGE_SIZE)." For hugetlbfs, I beieve the offset must be a multiple of the hugetlb page size. A similar comment/exception about using the "underlying page size" would apply here as well. -- Mike Kravetz -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>