]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
fuzz: use ITIMER_REAL for timeouts
authorAlexander Bulekov <alxndr@bu.edu>
Wed, 4 Aug 2021 13:56:20 +0000 (09:56 -0400)
committerAlexander Bulekov <alxndr@bu.edu>
Wed, 1 Sep 2021 11:33:13 +0000 (07:33 -0400)
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 <alxndr@bu.edu>
Reviewed-by: Darren Kenny <darren.kenny@oracle.com>
tests/qtest/fuzz/generic_fuzz.c

index 3e8ce29227b0e33314e65bece15f295a3907b81c..de427a37279e97a8bca7e9a27890d585aefc6cb5 100644 (file)
@@ -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 */