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