In the case sbrk() doesn't return ENOMEM, setup()
keeps looping forever.

Modify setup to check sbrk() return value and also to watch
if increment doesn't overflow.

Signed-off-by: Jan Stancek <jstan...@redhat.com>
---
 testcases/kernel/syscalls/sbrk/sbrk02.c |   13 ++++++++++---
 1 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/testcases/kernel/syscalls/sbrk/sbrk02.c 
b/testcases/kernel/syscalls/sbrk/sbrk02.c
index caa8537..5e9d4b8 100644
--- a/testcases/kernel/syscalls/sbrk/sbrk02.c
+++ b/testcases/kernel/syscalls/sbrk/sbrk02.c
@@ -34,7 +34,7 @@ static void sbrk_verify(void);
 static void cleanup(void);
 static int exp_enos[] = { ENOMEM, 0 };
 
-static long increment;
+static long increment = INC;
 
 int main(int argc, char *argv[])
 {
@@ -60,12 +60,19 @@ int main(int argc, char *argv[])
 
 static void setup(void)
 {
+       void *ret = NULL;
+
        tst_sig(NOFORK, DEF_HANDLER, cleanup);
 
        TEST_PAUSE;
 
-       for (increment = INC; errno == 0; increment+=INC)
-               sbrk(increment);
+       /* call sbrk until it fails or increment overflows */
+       while (ret != (void *)-1 && increment > 0) {
+               ret = sbrk(increment);
+               increment += INC;
+       }
+       tst_resm(TINFO | TERRNO, "setup() bailing inc: %ld, ret: %p, sbrk: %p",
+               increment, ret, sbrk(0));
 
        errno = 0;
 
-- 
1.7.1


------------------------------------------------------------------------------
Slashdot TV.  
Video for Nerds.  Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to