madvise: MADV_HUGEPAGE, MADV_NOHUGEPAGE: Fix error check

* Returns -EINVAL except for hugeobj and shmobj
* Fixes ostest-madvise.012 and ostest-madvise.013

Change-Id: Id1f1d6cc0c81edd204228ce5f75b641985e70cee
This commit is contained in:
Masamichi Takagi
2019-04-25 15:31:55 +09:00
parent 90b6aec53d
commit bc81d362b4

View File

@ -4781,11 +4781,11 @@ SYSCALL_DECLARE(madvise)
default:
case MADV_MERGEABLE:
case MADV_UNMERGEABLE:
case MADV_NOHUGEPAGE:
error = -EINVAL;
break;
case MADV_HUGEPAGE:
case MADV_NOHUGEPAGE:
case MADV_NORMAL:
case MADV_RANDOM:
case MADV_SEQUENTIAL:
@ -4869,6 +4869,13 @@ SYSCALL_DECLARE(madvise)
goto out;
}
/* only hugetlbfs and shm map support hugepage */
if ((advice == MADV_HUGEPAGE || advice == MADV_NOHUGEPAGE)
&& !(range->memobj->flags & (MF_HUGETLBFS | MF_SHM))) {
error = -EINVAL;
goto out;
}
s = start;
if (s < range->start) {
s = range->start;