xfs: fuzz every field of every structure and test kernel crashes

Fuzz every field of every structure and then try to write the
filesystem, to see how many of these writes can crash the kernel.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <guaneryu@gmail.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
This commit is contained in:
Darrick J. Wong
2018-07-06 07:41:46 -07:00
committed by Eryu Guan
parent 0f849ea13f
commit 0804dc1736
76 changed files with 2072 additions and 23 deletions
Executable
+46
View File
@@ -0,0 +1,46 @@
#! /bin/bash
# SPDX-License-Identifier: GPL-2.0
# Copyright (c) 2018 Oracle, Inc. All rights reserved.
#
# FS QA Test No. 460
#
# Populate a XFS filesystem and fuzz every inobt field.
# Do not fix the filesystem, to test metadata verifiers.
seq=`basename $0`
seqres=$RESULT_DIR/$seq
echo "QA output created by $seq"
here=`pwd`
tmp=/tmp/$$
status=1 # failure is the default!
trap "_cleanup; exit \$status" 0 1 2 3 7 15
_cleanup()
{
cd /
rm -rf $tmp.*
}
# get standard environment, filters and checks
. ./common/rc
. ./common/filter
. ./common/populate
. ./common/fuzzy
# real QA test starts here
_supported_os Linux
_supported_fs xfs
_require_scratch_xfs_fuzz_fields
_disable_dmesg_check
echo "Format and populate"
_scratch_populate_cached nofill > $seqres.full 2>&1
echo "Fuzz inobt"
_scratch_xfs_fuzz_metadata '' 'none' 'agi 1' 'addr root' >> $seqres.full
echo "Done fuzzing inobt"
# success, all done
status=0
exit