mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
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:
committed by
Eryu Guan
parent
0f849ea13f
commit
0804dc1736
Executable
+53
@@ -0,0 +1,53 @@
|
||||
#! /bin/bash
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright (c) 2018 Oracle, Inc. All rights reserved.
|
||||
#
|
||||
# FS QA Test No. 468
|
||||
#
|
||||
# Populate a XFS filesystem and fuzz every bmbt block 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 "Find bmbt block"
|
||||
_scratch_mount
|
||||
inum=$(stat -c '%i' $SCRATCH_MNT/S_IFREG.FMT_BTREE)
|
||||
_scratch_unmount
|
||||
|
||||
inode_ver=$(_scratch_xfs_get_metadata_field "core.version" "inode ${inum}")
|
||||
|
||||
echo "Fuzz bmbt"
|
||||
_scratch_xfs_fuzz_metadata '' 'none' "inode ${inum}" "addr u${inode_ver}.bmbt.ptrs[1]" >> $seqres.full
|
||||
echo "Done fuzzing bmbt"
|
||||
|
||||
# success, all done
|
||||
status=0
|
||||
exit
|
||||
Reference in New Issue
Block a user