From: Alexander Bulekov Date: Wed, 4 Aug 2021 13:56:20 +0000 (-0400) Subject: fuzz: use ITIMER_REAL for timeouts X-Git-Tag: v6.2.0-rc0~120^2~3 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=40c0d963db2a9d4a49c15554817bbaa11e0bed47;p=thirdparty%2Fqemu.git fuzz: use ITIMER_REAL for timeouts Using ITIMER_VIRTUAL is a bad idea, if the fuzzer hits a blocking syscall - e.g. ppoll with a NULL timespec. This causes timeout issues while fuzzing some block-device code. Fix that by using wall-clock time. This might cause inputs to timeout sometimes due to scheduling effects/ambient load, but it is better than bringing the entire fuzzing process to a halt. Based-on: <20210713150037.9297-1-alxndr@bu.edu> Signed-off-by: Alexander Bulekov Reviewed-by: Darren Kenny --- diff --git a/tests/qtest/fuzz/generic_fuzz.c b/tests/qtest/fuzz/generic_fuzz.c index 3e8ce29227b..de427a37279 100644 --- a/tests/qtest/fuzz/generic_fuzz.c +++ b/tests/qtest/fuzz/generic_fuzz.c @@ -695,7 +695,7 @@ static void generic_fuzz(QTestState *s, const unsigned char *Data, size_t Size) while (cmd && Size) { /* Reset the timeout, each time we run a new command */ if (timeout) { - setitimer(ITIMER_VIRTUAL, &timer, NULL); + setitimer(ITIMER_REAL, &timer, NULL); } /* Get the length until the next command or end of input */