mmap: return -EINVAL for non-anonymous, MAP_HUGETLB map

Change-Id: I2bcbbf0ee9c0f47160eabac4a8d09991c71fe852
This commit is contained in:
Masamichi Takagi
2020-06-16 09:05:27 +09:00
parent d1d93d90cc
commit fbd121d28c
2 changed files with 16 additions and 0 deletions

View File

@ -1726,6 +1726,14 @@ SYSCALL_DECLARE(mmap)
if (flags & MAP_HUGETLB) {
int hugeshift = flags & (0x3F << MAP_HUGE_SHIFT);
/* OpenMPI expects -EINVAL when trying to map
* /dev/shm/ file with MAP_SHARED | MAP_HUGETLB
*/
if (!(flags & MAP_ANONYMOUS)) {
error = -EINVAL;
goto out;
}
if (hugeshift == 0) {
/* default hugepage size */
flags |= ihk_mc_get_linux_default_huge_page_shift() <<

View File

@ -1430,6 +1430,14 @@ SYSCALL_DECLARE(mmap)
/* check arguments */
pgsize = PAGE_SIZE;
if (flags & MAP_HUGETLB) {
/* OpenMPI expects -EINVAL when trying to map
* /dev/shm/ file with MAP_SHARED | MAP_HUGETLB
*/
if (!(flags & MAP_ANONYMOUS)) {
error = -EINVAL;
goto out;
}
switch (flags & (0x3F << MAP_HUGE_SHIFT)) {
case 0:
/* default hugepage size */