[LTP] [PATCH] change mmap flags from PROT_EXEC to PROT_READ

Cyril Hrubis chrubis@suse.cz
Wed Jul 21 18:34:20 CEST 2021


Hi!
> In some architecture(e.g., mips), PROT_EXEC doesn't guarantee PROT_READ,
> which will cause segment fault. In others architectures, PROT_READ is
> more accurate.

First of all sorry for the late response.

> Signed-off-by: xueshi hu <hubachelar@gmail.com>
> ---
>  testcases/kernel/syscalls/mmap/mmap03.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/testcases/kernel/syscalls/mmap/mmap03.c b/testcases/kernel/syscalls/mmap/mmap03.c
> index b957a3218..2fcf1ef17 100644
> --- a/testcases/kernel/syscalls/mmap/mmap03.c
> +++ b/testcases/kernel/syscalls/mmap/mmap03.c
> @@ -85,7 +85,7 @@ int main(int ac, char **av)
>  		 * with execute access.
>  		 */
>  		errno = 0;
> -		addr = mmap(0, page_sz, PROT_EXEC,
> +		addr = mmap(0, page_sz, PROT_READ,
>  			    MAP_FILE | MAP_SHARED, fildes, 0);

This is not correct fix. The test actually expects that on certain
architectures PROT_EXEC does not imply PROT_READ but that check is
missing mips, so this should probably be fixed with:

diff --git a/testcases/kernel/syscalls/mmap/mmap03.c b/testcases/kernel/syscalls/mmap/mmap03.c
index b957a3218..9d94d2653 100644
--- a/testcases/kernel/syscalls/mmap/mmap03.c
+++ b/testcases/kernel/syscalls/mmap/mmap03.c
@@ -124,7 +124,7 @@ int main(int ac, char **av)
                                         "correct");
                        }
                }
-#if defined(__ia64__) || defined(__hppa__)
+#if defined(__ia64__) || defined(__hppa__) || defined(__mips__)
                if (pass) {
                        tst_resm(TPASS, "Got SIGSEGV as expected");
                } else {

Does this change fixes the test for you?

-- 
Cyril Hrubis
chrubis@suse.cz


More information about the ltp mailing list