diff --git a/test/fuzz/llvm/vfio/fuzz_vfio_json.conf b/test/fuzz/llvm/vfio/fuzz_vfio_json.conf index c899bcf12..743334fb5 100644 --- a/test/fuzz/llvm/vfio/fuzz_vfio_json.conf +++ b/test/fuzz/llvm/vfio/fuzz_vfio_json.conf @@ -29,15 +29,6 @@ { "subsystem": "nvmf", "config": [ - { - "method": "nvmf_set_config", - "params": { - "poll_groups_mask": "0x1", - "admin_cmd_passthru": { - "identify_ctrlr": false - } - } - }, { "method": "nvmf_create_transport", "params": { diff --git a/test/fuzz/llvm/vfio/run.sh b/test/fuzz/llvm/vfio/run.sh index f6cfcb5c4..27e87c4c8 100755 --- a/test/fuzz/llvm/vfio/run.sh +++ b/test/fuzz/llvm/vfio/run.sh @@ -3,6 +3,7 @@ # Copyright (C) 2022 Intel Corporation # All rights reserved. # +FUZZER=vfio if [[ $SPDK_TEST_FUZZER_SHORT -eq 0 ]]; then TIME=60000 else @@ -17,68 +18,57 @@ for i in "$@"; do esac done -VFIOUSER_DIR=/tmp/vfio-user/domain/1 -VFIOUSER_IO_DIR=/tmp/vfio-user/domain/2 -mkdir -p $VFIOUSER_DIR -mkdir -p $VFIOUSER_IO_DIR - function start_llvm_fuzz() { local fuzzer_type=$1 - local corpus_dir + local timen=$2 + local core=$3 + local corpus_dir=$rootdir/../corpus/llvm_vfio_$fuzzer_type + local fuzzer_dir=/tmp/vfio-user-$fuzzer_type + local vfiouser_dir=$fuzzer_dir/domain/1 + local vfiouser_io_dir=$fuzzer_dir/domain/2 + local vfiouser_cfg=$fuzzer_dir/fuzz_vfio_json.conf - corpus_dir=$rootdir/../corpus/llvm_vfio_$fuzzer_type - mkdir -p $corpus_dir + mkdir -p $fuzzer_dir $vfiouser_dir $vfiouser_io_dir $corpus_dir - $rootdir/test/app/fuzz/llvm_vfio_fuzz/llvm_vfio_fuzz -m 0x1 \ - -i 0 \ - -F $VFIOUSER_DIR \ - -c $testdir/fuzz_vfio_json.conf \ - -t $TIME \ + # Adjust paths to allow multiply instance of fuzzer + sed -e "s%/tmp/vfio-user/domain/1%$vfiouser_dir%; + s%/tmp/vfio-user/domain/2%$vfiouser_io_dir%" $testdir/fuzz_vfio_json.conf > $vfiouser_cfg + + $rootdir/test/app/fuzz/llvm_vfio_fuzz/llvm_vfio_fuzz \ + -m $core \ + -s $mem_size \ + -F $vfiouser_dir \ + -c $vfiouser_cfg \ + -t $timen \ -D $corpus_dir \ - -Y $VFIOUSER_IO_DIR \ + -Y $vfiouser_io_dir \ + -r $fuzzer_dir/spdk$fuzzer_type.sock \ -Z $fuzzer_type -} -function run_fuzz() { - local startday - local today - local interval=0 - local weekloop - # Get the date number, format is like '22078' - # The purpose is when Jenkins schedule one fuzz in Saturday - # We can decide which one fuzz will be run , there are lots of fuzz, but only run one of them in Saturday each time - # and make sure all fuzz will be tested, so use this function. Such run fuzz 0 in 03/26, and run fuzz 1 in 04/02, run fuzz 2 in 04/09 .... - startday=$(date -d '2022-03-19' '+%y%j') - today=$(date '+%y%j') - interval=$(((today - startday) / 7)) - weekloop=$((interval / fuzz_num)) - if [[ $weekloop -lt 1 ]]; then # The first loop of fuzz - fuzzer_type=$interval - else - fuzzer_type=$((interval % fuzz_num)) - fi - start_llvm_fuzz $fuzzer_type &> $output_dir/llvm/llvm_vfio_$fuzzer_type.txt + rm -rf $fuzzer_dir } testdir=$(readlink -f $(dirname $0)) rootdir=$(readlink -f $testdir/../../../../) source $rootdir/test/common/autotest_common.sh +source $rootdir/test/setup/common.sh +source $testdir/../common.sh fuzzfile=$rootdir/test/app/fuzz/llvm_vfio_fuzz/llvm_vfio_fuzz.c -fuzz_num=$(($(grep -c "fn =" $fuzzfile) - 1)) -[[ $fuzz_num -ne 0 ]] +fuzz_num=$(($(grep -c "\.fn =" $fuzzfile) - 1)) +((fuzz_num != 0)) -trap 'process_shm --id 0; rm -rf $VFIOUSER_DIR $VFIOUSER_IO_DIR; exit 1' SIGINT SIGTERM EXIT +trap 'cleanup /tmp/vfio-user-*; exit 1' SIGINT SIGTERM EXIT +# vfiouser transport is unable to connect if memory is restricted +mem_size=0 if [[ $SPDK_TEST_FUZZER_SHORT -eq 1 ]]; then - for ((i = 0; i < fuzz_num; i++)); do - start_llvm_fuzz $i - done + start_llvm_fuzz_short $fuzz_num $TIME elif [[ $SPDK_TEST_FUZZER -eq 1 ]]; then - run_fuzz + get_testn $fuzz_num 1024 + start_llvm_fuzz_all $TESTN $fuzz_num $TIME else - start_llvm_fuzz $1 + start_llvm_fuzz $1 $TIME 0x1 fi -rm -rf $VFIOUSER_DIR $VFIOUSER_IO_DIR trap - SIGINT SIGTERM EXIT