This patch fixes return value always being 0 in parent even if test
fails. Using exit(value) instead of tst_XXX.

Signed-off-by: Caspar Zhang <[email protected]>
---
 testcases/kernel/mem/vma/vma01.c |   31 ++++++++++++++++++++++++-------
 1 files changed, 24 insertions(+), 7 deletions(-)

diff --git a/testcases/kernel/mem/vma/vma01.c b/testcases/kernel/mem/vma/vma01.c
index 86e1276..55e994c 100644
--- a/testcases/kernel/mem/vma/vma01.c
+++ b/testcases/kernel/mem/vma/vma01.c
@@ -60,6 +60,7 @@ int TST_TOTAL = 1;
 
 static void check_vma(void);
 static void *get_end_addr(void *addr_s, char *mapfile);
+static void check_status(int status);
 static void setup(void);
 static void cleanup(void);
 
@@ -114,22 +115,24 @@ static void check_vma(void)
 			tst_brkm(TBROK|TERRNO, NULL, "mmap");
 		tst_resm(TINFO, "u = %p", u);
 		memset(u, 2, 4096);
+
 		x = get_end_addr(u, MAPS_FILE);
 		if (x == u + 6*ps)
-			tst_resm(TFAIL, "A single 6*ps VMA found.");
-		else if (x == u + 3*ps) {
+			exit(1);
+		if (x == u + 3*ps) {
 			y = get_end_addr(x, MAPS_FILE);
 			if (y == x + 3*ps)
-				tst_resm(TPASS, "two 3*ps VMAs found.");
-		} else
-			tst_brkm(TBROK, cleanup, "unexpected VMA found.");
-		exit(0);
+				exit(0);
+		}
+		exit(255);
 	default:
 		if (waitpid(-1, &status, 0) == -1)
 			tst_brkm(TBROK|TERRNO, cleanup, "waitpid");
+		if (!WIFEXITED(status))
+			tst_brkm(TBROK, cleanup, "child exited abnormally.");
+		check_status(WEXITSTATUS(status));
 		break;
 	}
-
 }
 
 static void *get_end_addr(void *addr_s, char *mapfile)
@@ -154,6 +157,20 @@ static void *get_end_addr(void *addr_s, char *mapfile)
 	tst_brkm(TBROK, cleanup, "no matched s = %p found.", addr_s);
 }
 
+static void check_status(int status)
+{
+	switch (status) {
+	case 0:
+		tst_resm(TPASS, "two 3*ps VMAs found.");
+		break;
+	case 1:
+		tst_resm(TFAIL, "A single 6*ps VMA found.");
+		break;
+	default:
+		tst_brkm(TBROK, cleanup, "unexpected VMA found.");
+	}
+}
+
 static void setup(void)
 {
 	tst_sig(FORK, DEF_HANDLER, cleanup);
------------------------------------------------------------------------------
uberSVN's rich system and user administration capabilities and model 
configuration take the hassle out of deploying and managing Subversion and 
the tools developers use with it. Learn more about uberSVN and get a free 
download at:  http://p.sf.net/sfu/wandisco-dev2dev
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to