From patchwork Mon Aug 13 13:59:05 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Palethorpe X-Patchwork-Id: 956995 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=lists.linux.it (client-ip=2001:1418:10:5::2; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=suse.com Received: from picard.linux.it (picard.linux.it [IPv6:2001:1418:10:5::2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 41py684Vjzz9sBD for ; Tue, 14 Aug 2018 00:00:00 +1000 (AEST) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 38A443E6FF7 for ; Mon, 13 Aug 2018 15:59:57 +0200 (CEST) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-7.smtp.seeweb.it (in-7.smtp.seeweb.it [217.194.8.7]) by picard.linux.it (Postfix) with ESMTP id 4DF793E601F for ; Mon, 13 Aug 2018 15:59:55 +0200 (CEST) Received: from mx1.suse.de (mx2.suse.de [195.135.220.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by in-7.smtp.seeweb.it (Postfix) with ESMTPS id 71EE4200394 for ; Mon, 13 Aug 2018 15:59:54 +0200 (CEST) Received: from relay1.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id F1CB2AF31; Mon, 13 Aug 2018 13:59:53 +0000 (UTC) From: Richard Palethorpe To: ltp@lists.linux.it Date: Mon, 13 Aug 2018 15:59:05 +0200 Message-Id: <20180813135908.30752-1-rpalethorpe@suse.com> X-Mailer: git-send-email 2.18.0 X-Virus-Scanned: clamav-milter 0.99.2 at in-7.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=-0.0 required=7.0 tests=SPF_PASS autolearn=disabled version=3.4.0 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on in-7.smtp.seeweb.it Cc: Richard Palethorpe Subject: [LTP] [PATCH v2 1/4] lib: Allow user to easily get LTP_TIMEOUT_MUL value X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.18 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Signed-off-by: Richard Palethorpe --- V2: * Remove code which performs extra loop if one thread is behind the other because it only works when thread A sets exit after it has finished looping. * Scale the execution time by LTP_TIMEOUT_MUL include/tst_test.h | 1 + lib/tst_test.c | 23 ++++++++++++++--------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/include/tst_test.h b/include/tst_test.h index 98dacf387..0ad9025f2 100644 --- a/include/tst_test.h +++ b/include/tst_test.h @@ -217,6 +217,7 @@ const char *tst_strsig(int sig); */ const char *tst_strstatus(int status); +float tst_timeout_mul(void); void tst_set_timeout(int timeout); #ifndef TST_NO_DEFAULT_MAIN diff --git a/lib/tst_test.c b/lib/tst_test.c index 2f3d357d2..f760e05b3 100644 --- a/lib/tst_test.c +++ b/lib/tst_test.c @@ -992,26 +992,31 @@ static void sigint_handler(int sig LTP_ATTRIBUTE_UNUSED) } } -void tst_set_timeout(int timeout) +float tst_timeout_mul(void) { char *mul = getenv("LTP_TIMEOUT_MUL"); - if (timeout == -1) { - tst_res(TINFO, "Timeout per run is disabled"); - return; - } - - results->timeout = timeout; - if (mul) { float m = atof(mul); if (m < 1) tst_brk(TBROK, "Invalid timeout multiplier '%s'", mul); - results->timeout = results->timeout * m + 0.5; + return m; + } + + return 1; +} + +void tst_set_timeout(int timeout) +{ + if (timeout == -1) { + tst_res(TINFO, "Timeout per run is disabled"); + return; } + results->timeout = timeout * tst_timeout_mul() + 0.5; + tst_res(TINFO, "Timeout per run is %uh %02um %02us", results->timeout/3600, (results->timeout%3600)/60, results->timeout % 60); From patchwork Mon Aug 13 13:59:06 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Palethorpe X-Patchwork-Id: 956998 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=lists.linux.it (client-ip=2001:1418:10:5::2; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=suse.com Received: from picard.linux.it (picard.linux.it [IPv6:2001:1418:10:5::2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 41py6P6gcJz9sC7 for ; Tue, 14 Aug 2018 00:00:13 +1000 (AEST) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 2AF8C3E7509 for ; Mon, 13 Aug 2018 16:00:09 +0200 (CEST) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-6.smtp.seeweb.it (in-6.smtp.seeweb.it [IPv6:2001:4b78:1:20::6]) by picard.linux.it (Postfix) with ESMTP id 327A23E600C for ; Mon, 13 Aug 2018 15:59:55 +0200 (CEST) Received: from mx1.suse.de (mx2.suse.de [195.135.220.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by in-6.smtp.seeweb.it (Postfix) with ESMTPS id 7267114011B9 for ; Mon, 13 Aug 2018 15:59:54 +0200 (CEST) Received: from relay1.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 0EC68AF7E; Mon, 13 Aug 2018 13:59:54 +0000 (UTC) From: Richard Palethorpe To: ltp@lists.linux.it Date: Mon, 13 Aug 2018 15:59:06 +0200 Message-Id: <20180813135908.30752-2-rpalethorpe@suse.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180813135908.30752-1-rpalethorpe@suse.com> References: <20180813135908.30752-1-rpalethorpe@suse.com> X-Virus-Scanned: clamav-milter 0.99.2 at in-6.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=-0.0 required=7.0 tests=SPF_PASS autolearn=disabled version=3.4.0 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on in-6.smtp.seeweb.it Cc: Richard Palethorpe Subject: [LTP] [PATCH v2 2/4] tst_timer: Convert to new library X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.18 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" So we can use functions from new lib. Signed-off-by: Richard Palethorpe --- lib/tst_timer.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/tst_timer.c b/lib/tst_timer.c index 53ff36777..d5e4c49d2 100644 --- a/lib/tst_timer.c +++ b/lib/tst_timer.c @@ -23,7 +23,9 @@ #include -#include "test.h" +#define TST_NO_DEFAULT_MAIN + +#include "tst_test.h" #include "tst_timer.h" #include "tst_clocks.h" #include "lapi/posix_clocks.h" @@ -59,13 +61,13 @@ void tst_timer_check(clockid_t clk_id) { if (tst_clock_gettime(clk_id, &start_time)) { if (errno == EINVAL) { - tst_brkm(TCONF, NULL, + tst_brk(TCONF, "Clock id %s(%u) not supported by kernel", clock_name(clk_id), clk_id); return; } - tst_brkm(TBROK | TERRNO, NULL, "tst_clock_gettime() failed"); + tst_brk(TBROK | TERRNO, "tst_clock_gettime() failed"); } } @@ -74,7 +76,7 @@ void tst_timer_start(clockid_t clk_id) clock_id = clk_id; if (tst_clock_gettime(clock_id, &start_time)) - tst_resm(TWARN | TERRNO, "tst_clock_gettime() failed"); + tst_res(TWARN | TERRNO, "tst_clock_gettime() failed"); } int tst_timer_expired_ms(long long ms) @@ -82,7 +84,7 @@ int tst_timer_expired_ms(long long ms) struct timespec cur_time; if (tst_clock_gettime(clock_id, &cur_time)) - tst_resm(TWARN | TERRNO, "tst_clock_gettime() failed"); + tst_res(TWARN | TERRNO, "tst_clock_gettime() failed"); return tst_timespec_diff_ms(cur_time, start_time) >= ms; } @@ -90,7 +92,7 @@ int tst_timer_expired_ms(long long ms) void tst_timer_stop(void) { if (tst_clock_gettime(clock_id, &stop_time)) - tst_resm(TWARN | TERRNO, "tst_clock_gettime() failed"); + tst_res(TWARN | TERRNO, "tst_clock_gettime() failed"); } struct timespec tst_timer_elapsed(void) From patchwork Mon Aug 13 13:59:07 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Palethorpe X-Patchwork-Id: 956997 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=lists.linux.it (client-ip=2001:1418:10:5::2; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=suse.com Received: from picard.linux.it (picard.linux.it [IPv6:2001:1418:10:5::2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 41py6J2w7qz9s8T for ; Tue, 14 Aug 2018 00:00:08 +1000 (AEST) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 93EEC3E7499 for ; Mon, 13 Aug 2018 16:00:05 +0200 (CEST) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-4.smtp.seeweb.it (in-4.smtp.seeweb.it [217.194.8.4]) by picard.linux.it (Postfix) with ESMTP id A65743E6013 for ; Mon, 13 Aug 2018 15:59:55 +0200 (CEST) Received: from mx1.suse.de (mx2.suse.de [195.135.220.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by in-4.smtp.seeweb.it (Postfix) with ESMTPS id 7274A100036E for ; Mon, 13 Aug 2018 15:59:54 +0200 (CEST) Received: from relay1.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 1870DAFA1; Mon, 13 Aug 2018 13:59:54 +0000 (UTC) From: Richard Palethorpe To: ltp@lists.linux.it Date: Mon, 13 Aug 2018 15:59:07 +0200 Message-Id: <20180813135908.30752-3-rpalethorpe@suse.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180813135908.30752-1-rpalethorpe@suse.com> References: <20180813135908.30752-1-rpalethorpe@suse.com> X-Virus-Scanned: clamav-milter 0.99.2 at in-4.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=-0.0 required=7.0 tests=SPF_PASS autolearn=disabled version=3.4.0 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on in-4.smtp.seeweb.it Cc: Richard Palethorpe Subject: [LTP] [PATCH v2 3/4] tst_timer: Add tst_timer_state_ms function X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.18 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Allow the user to discover the current timer state with a single function. Useful for using a timer in a loop where we do not know if the timer has already been started. Also scale the expiration time by LTP_TIMEOUT_MUL so that the end user can control the time tests take which use this API. Signed-off-by: Richard Palethorpe --- include/tst_timer.h | 7 +++++++ lib/tst_timer.c | 14 +++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/include/tst_timer.h b/include/tst_timer.h index 0fd7ed6cf..a6df53e82 100644 --- a/include/tst_timer.h +++ b/include/tst_timer.h @@ -34,6 +34,11 @@ #include #include +#define TST_TIMER_NONE 0 +#define TST_TIMER_STARTED 1 +#define TST_TIMER_STOPPED (1 << 1) +#define TST_TIMER_EXPIRED (1 << 2) + /* * Converts timespec to microseconds. */ @@ -259,6 +264,8 @@ void tst_timer_start(clockid_t clk_id); */ int tst_timer_expired_ms(long long ms); +int tst_timer_state_ms(long long ms); + /* * Marks timer end time. */ diff --git a/lib/tst_timer.c b/lib/tst_timer.c index d5e4c49d2..182b21441 100644 --- a/lib/tst_timer.c +++ b/lib/tst_timer.c @@ -86,7 +86,19 @@ int tst_timer_expired_ms(long long ms) if (tst_clock_gettime(clock_id, &cur_time)) tst_res(TWARN | TERRNO, "tst_clock_gettime() failed"); - return tst_timespec_diff_ms(cur_time, start_time) >= ms; + return tst_timespec_diff_ms(cur_time, start_time) + >= ms * tst_timeout_mul(); +} + +int tst_timer_state_ms(long long ms) +{ + int status = TST_TIMER_NONE; + + status |= (start_time.tv_sec | start_time.tv_nsec) > 0; + status |= ((stop_time.tv_sec | stop_time.tv_nsec) > 0) << 1; + status |= tst_timer_expired_ms(ms) << 2; + + return status; } void tst_timer_stop(void) From patchwork Mon Aug 13 13:59:08 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Palethorpe X-Patchwork-Id: 956996 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=lists.linux.it (client-ip=213.254.12.146; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=suse.com Received: from picard.linux.it (picard.linux.it [213.254.12.146]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 41py6C4P6hz9s8T for ; Tue, 14 Aug 2018 00:00:02 +1000 (AEST) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 794B23E740A for ; Mon, 13 Aug 2018 16:00:00 +0200 (CEST) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-7.smtp.seeweb.it (in-7.smtp.seeweb.it [217.194.8.7]) by picard.linux.it (Postfix) with ESMTP id 4B4E13E6013 for ; Mon, 13 Aug 2018 15:59:55 +0200 (CEST) Received: from mx1.suse.de (mx2.suse.de [195.135.220.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by in-7.smtp.seeweb.it (Postfix) with ESMTPS id 72AFD2003B1 for ; Mon, 13 Aug 2018 15:59:54 +0200 (CEST) Received: from relay1.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 1CA66AFDF; Mon, 13 Aug 2018 13:59:54 +0000 (UTC) From: Richard Palethorpe To: ltp@lists.linux.it Date: Mon, 13 Aug 2018 15:59:08 +0200 Message-Id: <20180813135908.30752-4-rpalethorpe@suse.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180813135908.30752-1-rpalethorpe@suse.com> References: <20180813135908.30752-1-rpalethorpe@suse.com> X-Virus-Scanned: clamav-milter 0.99.2 at in-7.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=-0.0 required=7.0 tests=SPF_PASS autolearn=disabled version=3.4.0 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on in-7.smtp.seeweb.it Cc: Richard Palethorpe Subject: [LTP] [PATCH v2 4/4] fzsync: Limit execution time to prevent test timeouts X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.18 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Use the tst_timer library to check how long the main test loop has been running for and break the loop if it exceeds 60 seconds. This prevents an overall test timeout which is reported as a failure. Signed-off-by: Richard Palethorpe Reviewed-by: Li Wang --- include/tst_fuzzy_sync.h | 47 ++++++++++++------- lib/newlib_tests/test16.c | 3 +- testcases/cve/cve-2014-0196.c | 3 +- testcases/cve/cve-2016-7117.c | 3 +- testcases/cve/cve-2017-2671.c | 3 +- testcases/kernel/syscalls/inotify/inotify09.c | 3 +- 6 files changed, 41 insertions(+), 21 deletions(-) diff --git a/include/tst_fuzzy_sync.h b/include/tst_fuzzy_sync.h index bcc625e24..75866d73c 100644 --- a/include/tst_fuzzy_sync.h +++ b/include/tst_fuzzy_sync.h @@ -42,6 +42,7 @@ #include #include #include "tst_atomic.h" +#include "tst_timer.h" #ifndef CLOCK_MONOTONIC_RAW # define CLOCK_MONOTONIC_RAW CLOCK_MONOTONIC @@ -265,9 +266,7 @@ static inline int tst_fzsync_pair_wait(struct tst_fzsync_pair *pair, ; } - /* Only exit if we have done the same amount of work as the other thread */ - return !tst_atomic_load(&pair->exit) || - tst_atomic_load(other_cntr) <= tst_atomic_load(our_cntr); + return !tst_atomic_load(&pair->exit); } static inline int tst_fzsync_wait_a(struct tst_fzsync_pair *pair) @@ -280,6 +279,17 @@ static inline int tst_fzsync_wait_b(struct tst_fzsync_pair *pair) return tst_fzsync_pair_wait(pair, &pair->b_cntr, &pair->a_cntr); } +/** + * tst_fzsync_pair_exit - Signal that the other thread should exit + * + * Causes tst_fzsync_pair_wait() and tst_fzsync_pair_wait_update() to return + * 0. + */ +static inline void tst_fzsync_pair_exit(struct tst_fzsync_pair *pair) +{ + tst_atomic_store(1, &pair->exit); +} + /** * tst_fzsync_pair_wait_update_{a,b} - Wait and then recalculate * @@ -301,10 +311,26 @@ static inline int tst_fzsync_wait_b(struct tst_fzsync_pair *pair) static inline int tst_fzsync_wait_update_a(struct tst_fzsync_pair *pair) { static int loop_index; + int timer_state = tst_timer_state_ms(60000); + int exit = 0; + + if (!(timer_state & TST_TIMER_STARTED)) { + tst_timer_start(CLOCK_MONOTONIC_RAW); + } else if (timer_state & TST_TIMER_EXPIRED) { + tst_res(TINFO, + "Exceeded fuzzy sync time limit, requesting exit"); + exit = 1; + } tst_fzsync_pair_wait(pair, &pair->a_cntr, &pair->b_cntr); - loop_index++; - tst_fzsync_pair_update(loop_index, pair); + + if (exit) { + tst_fzsync_pair_exit(pair); + } else { + loop_index++; + tst_fzsync_pair_update(loop_index, pair); + } + return tst_fzsync_pair_wait(pair, &pair->a_cntr, &pair->b_cntr); } @@ -313,14 +339,3 @@ static inline int tst_fzsync_wait_update_b(struct tst_fzsync_pair *pair) tst_fzsync_pair_wait(pair, &pair->b_cntr, &pair->a_cntr); return tst_fzsync_pair_wait(pair, &pair->b_cntr, &pair->a_cntr); } - -/** - * tst_fzsync_pair_exit - Signal that the other thread should exit - * - * Causes tst_fzsync_pair_wait() and tst_fzsync_pair_wait_update() to return - * 0. - */ -static inline void tst_fzsync_pair_exit(struct tst_fzsync_pair *pair) -{ - tst_atomic_store(1, &pair->exit); -} diff --git a/lib/newlib_tests/test16.c b/lib/newlib_tests/test16.c index d80bd5369..bb3d86e2d 100644 --- a/lib/newlib_tests/test16.c +++ b/lib/newlib_tests/test16.c @@ -65,7 +65,8 @@ static void run(void) unsigned int i, j, fail = 0; for (i = 0; i < LOOPS; i++) { - tst_fzsync_wait_update_a(&pair); + if (!tst_fzsync_wait_update_a(&pair)) + break; tst_fzsync_delay_a(&pair); seq[seq_n] = 'A'; seq_n = i * 2 + 1; diff --git a/testcases/cve/cve-2014-0196.c b/testcases/cve/cve-2014-0196.c index d18108897..8d15909b7 100644 --- a/testcases/cve/cve-2014-0196.c +++ b/testcases/cve/cve-2014-0196.c @@ -118,7 +118,8 @@ static void run(void) t.c_lflag |= ECHO; tcsetattr(master_fd, TCSANOW, &t); - tst_fzsync_wait_update_a(&fzsync_pair); + if (!tst_fzsync_wait_update_a(&fzsync_pair)) + break; tst_fzsync_delay_a(&fzsync_pair); tst_fzsync_time_a(&fzsync_pair); diff --git a/testcases/cve/cve-2016-7117.c b/testcases/cve/cve-2016-7117.c index 3cb7efcdf..d68f62ecc 100644 --- a/testcases/cve/cve-2016-7117.c +++ b/testcases/cve/cve-2016-7117.c @@ -140,7 +140,8 @@ static void run(void) if (socketpair(AF_LOCAL, SOCK_DGRAM, 0, (int *)socket_fds)) tst_brk(TBROK | TERRNO, "Socket creation failed"); - tst_fzsync_wait_update_a(&fzsync_pair); + if (!tst_fzsync_wait_update_a(&fzsync_pair)) + break; tst_fzsync_delay_a(&fzsync_pair); stat = tst_syscall(__NR_recvmmsg, diff --git a/testcases/cve/cve-2017-2671.c b/testcases/cve/cve-2017-2671.c index b0471bfff..21dd2a754 100644 --- a/testcases/cve/cve-2017-2671.c +++ b/testcases/cve/cve-2017-2671.c @@ -115,7 +115,8 @@ static void run(void) SAFE_CONNECT(sockfd, (struct sockaddr *)&iaddr, sizeof(iaddr)); - tst_fzsync_wait_update_a(&fzsync_pair); + if (!tst_fzsync_wait_update_a(&fzsync_pair)) + break; tst_fzsync_delay_a(&fzsync_pair); connect(sockfd, (struct sockaddr *)&uaddr, sizeof(uaddr)); tst_fzsync_time_a(&fzsync_pair); diff --git a/testcases/kernel/syscalls/inotify/inotify09.c b/testcases/kernel/syscalls/inotify/inotify09.c index 475411311..52df38f24 100644 --- a/testcases/kernel/syscalls/inotify/inotify09.c +++ b/testcases/kernel/syscalls/inotify/inotify09.c @@ -102,7 +102,8 @@ static void verify_inotify(void) if (wd < 0) tst_brk(TBROK | TERRNO, "inotify_add_watch() failed."); - tst_fzsync_wait_update_a(&fzsync_pair); + if (!tst_fzsync_wait_update_a(&fzsync_pair)) + break; tst_fzsync_delay_a(&fzsync_pair); wd = myinotify_rm_watch(inotify_fd, wd);