mirror of
https://git.yoctoproject.org/poky
synced 2026-04-27 03:32:12 +02:00
ltp: modify mmap_24-2 testcase
Mips will return EINVAL instead of ENOMEM as expected
if the range [addr + len) exceeds TASK_SIZE.
Linux kernel code: arch/mips/mm/mmap.c
if (flags & MAP_FIXED) {
/* Even MAP_FIXED mappings must reside within TASK_SIZE */
if (TASK_SIZE - len < addr)
return -EINVAL;
Relax the condition and accept both ENOMEM and EINVAL
as expected outcome.
(From OE-Core rev: ff1d158fb15f7a8bc7bca542baac6f9873a58f68)
Signed-off-by: Hongzhi.Song <hongzhi.song@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
bfa9068b40
commit
8bea6f81d0
@@ -0,0 +1,68 @@
|
||||
From 85c972f730e8efe891a06ea3a2dfb5cbbdfbfbf4 Mon Sep 17 00:00:00 2001
|
||||
From: "Hongzhi.Song" <hongzhi.song@windriver.com>
|
||||
Date: Wed, 10 Oct 2018 22:07:05 -0400
|
||||
Subject: [PATCH] open_posix_testsuite/mmap24-2: Relax condition a bit
|
||||
|
||||
Mips will return EINVAL instead of ENOMEM as expected
|
||||
if the range [addr + len) exceeds TASK_SIZE.
|
||||
|
||||
Linux kernel code: arch/mips/mm/mmap.c
|
||||
if (flags & MAP_FIXED) {
|
||||
/* Even MAP_FIXED mappings must reside within TASK_SIZE */
|
||||
if (TASK_SIZE - len < addr)
|
||||
return -EINVAL;
|
||||
|
||||
Relax the condition and accept both ENOMEM and EINVAL
|
||||
as expected outcome.
|
||||
|
||||
Upstream-Status: Submitted [https://lists.linux.it/pipermail/ltp/2018-October/009624.html]
|
||||
|
||||
Signed-off-by: Hongzhi.Song <hongzhi.song@windriver.com>
|
||||
---
|
||||
.../open_posix_testsuite/conformance/interfaces/mmap/24-2.c | 10 +++++-----
|
||||
1 file changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/testcases/open_posix_testsuite/conformance/interfaces/mmap/24-2.c b/testcases/open_posix_testsuite/conformance/interfaces/mmap/24-2.c
|
||||
index de51d43..810e5c8 100644
|
||||
--- a/testcases/open_posix_testsuite/conformance/interfaces/mmap/24-2.c
|
||||
+++ b/testcases/open_posix_testsuite/conformance/interfaces/mmap/24-2.c
|
||||
@@ -7,7 +7,7 @@
|
||||
* source tree.
|
||||
*
|
||||
* The mmap() function shall fail if:
|
||||
- * [ENOMEM] MAP_FIXED was specified,
|
||||
+ * [ENOMEM or EINVAL] MAP_FIXED was specified,
|
||||
* and the range [addr,addr+len) exceeds that allowed
|
||||
* for the address space of a process; or, if MAP_FIXED was not specified and
|
||||
* there is insufficient room in the address space to effect the mapping.
|
||||
@@ -15,7 +15,7 @@
|
||||
* Test Step:
|
||||
* 1. Map a shared memory object, with size exceeding the value get from
|
||||
* rlim_cur of resource RLIMIT_AS, setting MAP_FIXED;
|
||||
- * 3. Should get ENOMEM.
|
||||
+ * 3. Should get ENOMEM or EINVAL.
|
||||
*/
|
||||
|
||||
#define _XOPEN_SOURCE 600
|
||||
@@ -93,8 +93,8 @@ int main(void)
|
||||
(unsigned long)len);
|
||||
pa = mmap(addr, len, PROT_READ | PROT_WRITE, MAP_FIXED | MAP_SHARED, fd,
|
||||
0);
|
||||
- if (pa == MAP_FAILED && errno == ENOMEM) {
|
||||
- printf("Got ENOMEM: %s\nTest PASSED\n", strerror(errno));
|
||||
+ if (pa == MAP_FAILED && (errno == ENOMEM || errno == EINVAL)) {
|
||||
+ printf("Got ENOMEM or EINVAL: %s\nTest PASSED\n", strerror(errno));
|
||||
exit(PTS_PASS);
|
||||
}
|
||||
|
||||
@@ -103,6 +103,6 @@ int main(void)
|
||||
else
|
||||
munmap(pa, len);
|
||||
close(fd);
|
||||
- printf("Test Fail: Did not get ENOMEM as expected\n");
|
||||
+ printf("Test Failed: Did not get ENOMEM or EINVAL as expected\n");
|
||||
return PTS_FAIL;
|
||||
}
|
||||
--
|
||||
2.8.1
|
||||
|
||||
@@ -55,6 +55,7 @@ SRC_URI = "git://github.com/linux-test-project/ltp.git \
|
||||
file://0001-syscalls-fcntl-make-OFD-command-use-fcntl64-syscall-.patch \
|
||||
file://0001-sigwaitinfo01-recent-glibc-calls-syscall-directly.patch \
|
||||
file://0001-netns_helper.sh-use-ping-6-when-ping6-is-not-avaliab.patch \
|
||||
file://0001-open_posix_testsuite-mmap24-2-Relax-condition-a-bit.patch \
|
||||
"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
Reference in New Issue
Block a user