mmap: return -EINVAL for non-anonymous, MAP_HUGETLB map
Change-Id: I2bcbbf0ee9c0f47160eabac4a8d09991c71fe852
This commit is contained in:
@@ -1726,6 +1726,14 @@ SYSCALL_DECLARE(mmap)
|
|||||||
if (flags & MAP_HUGETLB) {
|
if (flags & MAP_HUGETLB) {
|
||||||
int hugeshift = flags & (0x3F << MAP_HUGE_SHIFT);
|
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) {
|
if (hugeshift == 0) {
|
||||||
/* default hugepage size */
|
/* default hugepage size */
|
||||||
flags |= ihk_mc_get_linux_default_huge_page_shift() <<
|
flags |= ihk_mc_get_linux_default_huge_page_shift() <<
|
||||||
|
|||||||
@@ -1430,6 +1430,14 @@ SYSCALL_DECLARE(mmap)
|
|||||||
/* check arguments */
|
/* check arguments */
|
||||||
pgsize = PAGE_SIZE;
|
pgsize = PAGE_SIZE;
|
||||||
if (flags & MAP_HUGETLB) {
|
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)) {
|
switch (flags & (0x3F << MAP_HUGE_SHIFT)) {
|
||||||
case 0:
|
case 0:
|
||||||
/* default hugepage size */
|
/* default hugepage size */
|
||||||
|
|||||||
Reference in New Issue
Block a user