From cb3a3032acf818a69e6d7bd028d4b0c927b0fac4 Mon Sep 17 00:00:00 2001 From: Renxiu Liang Date: Mon, 16 Aug 2010 19:57:54 -0700 Subject: [PATCH 1/1] Fix sig_handler() for SIGSEGV in mmap1.c "mtest06" is aimed at stressing the memory manager by simultanious map/unmap/read by light weight processes; it tries to handle SIGSEGV signal in sig_handler instead of doing synchronizations between read and write threads; two more race conditions are not covered: one is si_code equals "SEGV_MAPERR" but si_address does not equal to map_address; the other is si_code equals to "SEGV_ACCERR"; try to cover the three conditions in one case to reduce the complexity. Signed-off-by: Renxiu Liang --- testcases/kernel/mem/mtest06/mmap1.c | 8 ++------ 1 files changed, 2 insertions(+), 6 deletions(-) diff --git a/testcases/kernel/mem/mtest06/mmap1.c b/testcases/kernel/mem/mtest06/mmap1.c index 47ab49a..7eb3547 100644 --- a/testcases/kernel/mem/mtest06/mmap1.c +++ b/testcases/kernel/mem/mtest06/mmap1.c @@ -168,14 +168,10 @@ sig_handler(int signal, /* signal number, set to handle SIGALRM */ _exit(0); case SIGSEGV: - if (info->si_code == SEGV_MAPERR && - info->si_addr == map_address) - { - tst_resm(TINFO, + tst_resm(TINFO, "page fault occurred at %p", map_address); - longjmp(jmpbuf, 1); - } + longjmp(jmpbuf, 1); default: fprintf(stderr, "caught unexpected signal - %d --- exiting\n", signal); -- 1.6.1