From ff1d158fb15f7a8bc7bca542baac6f9873a58f68 Mon Sep 17 00:00:00 2001 From: "Hongzhi.Song" Date: Mon, 15 Oct 2018 22:54:19 -0400 Subject: 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. Signed-off-by: Hongzhi.Song Signed-off-by: Richard Purdie --- ..._testsuite-mmap24-2-Relax-condition-a-bit.patch | 68 ++++++++++++++++++++++ meta/recipes-extended/ltp/ltp_20180515.bb | 1 + 2 files changed, 69 insertions(+) create mode 100644 meta/recipes-extended/ltp/ltp/0001-open_posix_testsuite-mmap24-2-Relax-condition-a-bit.patch (limited to 'meta/recipes-extended') diff --git a/meta/recipes-extended/ltp/ltp/0001-open_posix_testsuite-mmap24-2-Relax-condition-a-bit.patch b/meta/recipes-extended/ltp/ltp/0001-open_posix_testsuite-mmap24-2-Relax-condition-a-bit.patch new file mode 100644 index 0000000000..4d771c0b9c --- /dev/null +++ b/meta/recipes-extended/ltp/ltp/0001-open_posix_testsuite-mmap24-2-Relax-condition-a-bit.patch @@ -0,0 +1,68 @@ +From 85c972f730e8efe891a06ea3a2dfb5cbbdfbfbf4 Mon Sep 17 00:00:00 2001 +From: "Hongzhi.Song" +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 +--- + .../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 + diff --git a/meta/recipes-extended/ltp/ltp_20180515.bb b/meta/recipes-extended/ltp/ltp_20180515.bb index 643239f793..ff85be723f 100644 --- a/meta/recipes-extended/ltp/ltp_20180515.bb +++ b/meta/recipes-extended/ltp/ltp_20180515.bb @@ -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" -- cgit 1.2.3-korg