From: Amir Goldstein <amir73il@gmail.com>
To: Eryu Guan <guaneryu@gmail.com>
Cc: Miklos Szeredi <miklos@szeredi.hu>,
Lubos Dolezel <lubos@dolezel.info>,
Dan Carpenter <dan.carpenter@oracle.com>,
linux-unionfs@vger.kernel.org, fstests@vger.kernel.org
Subject: [PATCH 2/2] overlay: regression test for two file handle bugs
Date: Wed, 6 May 2020 13:22:59 +0300 [thread overview]
Message-ID: <20200506102259.28107-3-amir73il@gmail.com> (raw)
In-Reply-To: <20200506102259.28107-1-amir73il@gmail.com>
Test two overlayfs file handle bugs:
1. Failure to query file handle size
Fixed by kernel commit:
ovl: return required buffer size for file handles
2. Kernel OOPS on open by hand crafted malformed file handle
Fixed by kernel commit:
ovl: potential crash in ovl_fid_to_fh()
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
---
tests/overlay/073 | 80 +++++++++++++++++++++++++++++++++++++++++++
tests/overlay/073.out | 2 ++
tests/overlay/group | 1 +
3 files changed, 83 insertions(+)
create mode 100755 tests/overlay/073
create mode 100644 tests/overlay/073.out
diff --git a/tests/overlay/073 b/tests/overlay/073
new file mode 100755
index 00000000..72233fae
--- /dev/null
+++ b/tests/overlay/073
@@ -0,0 +1,80 @@
+#! /bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (C) 2020 CTERA Networks. All Rights Reserved.
+#
+# FS QA Test No. 073
+#
+# Test two overlayfs file handle bugs:
+# 1. Failure to query file handle size
+# Fixed by kernel commit:
+# ovl: return required buffer size for file handles
+#
+# 2. Kernel OOPS on open by hand crafted malformed file handle
+# Fixed by kernel commit:
+# ovl: potential crash in ovl_fid_to_fh()
+#
+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 15
+
+_cleanup()
+{
+ cd /
+ #rm -f $tmp.*
+}
+
+# get standard environment, filters and checks
+. ./common/rc
+. ./common/filter
+
+# real QA test starts here
+
+_supported_fs overlay
+_supported_os Linux
+_require_scratch
+_require_test_program "open_by_handle"
+# We need to require all features together, because nfs_export cannot
+# be enabled when index is disabled
+_require_scratch_overlay_features index nfs_export
+
+rm -f $seqres.full
+
+_scratch_mkfs
+_scratch_mount -o "index=on,nfs_export=on"
+
+testdir=$SCRATCH_MNT/testdir
+
+# Create directory with test file
+$here/src/open_by_handle -cp $testdir
+
+# Test query file handle size on dir and file
+$here/src/open_by_handle -pz $testdir
+
+# Export file handle into tmp file
+$here/src/open_by_handle -o $tmp.file_handle $testdir
+
+# Verify open by exported file handle
+$here/src/open_by_handle -i $tmp.file_handle $testdir
+
+# Mangle the exported file handle:
+# handle_bytes = 1
+# handle_type = OVL_FILEID_V0 (0xfb)
+# File handle is encoded in host order
+# The command below crafts this header for little endian.
+# On different big endian architectures the file handle will still
+# be malformed just not with the specific values to trigger the bug
+$XFS_IO_PROG -c "pwrite -S 0 0 8" -c "pwrite -S 1 0 1" -c "pwrite -S 0xfb 4 1" $tmp.file_handle >> $seqres.full
+
+# Verify failure to open by mangled file handle
+# This will trigger NULL pointer dereference on affected kernels
+$here/src/open_by_handle -i $tmp.file_handle $testdir 2>> $seqres.full && \
+ _fail "open by mangaled file handle is expected to fail"
+
+echo "Silence is golden"
+status=0
+exit
diff --git a/tests/overlay/073.out b/tests/overlay/073.out
new file mode 100644
index 00000000..d107704c
--- /dev/null
+++ b/tests/overlay/073.out
@@ -0,0 +1,2 @@
+QA output created by 073
+Silence is golden
diff --git a/tests/overlay/group b/tests/overlay/group
index 82876d09..5625a46d 100644
--- a/tests/overlay/group
+++ b/tests/overlay/group
@@ -75,3 +75,4 @@
070 auto quick copyup redirect nested
071 auto quick copyup redirect nested nonsamefs
072 auto quick copyup hardlink
+073 auto quick exportfs dangerous
--
2.17.1
prev parent reply other threads:[~2020-05-06 10:23 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-06 10:22 [PATCH 0/2] Overlayfs tests for file handle bugs Amir Goldstein
2020-05-06 10:22 ` [PATCH 1/2] open_by_handle: add option -z to query file handle size Amir Goldstein
2020-05-06 10:22 ` Amir Goldstein [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200506102259.28107-3-amir73il@gmail.com \
--to=amir73il@gmail.com \
--cc=dan.carpenter@oracle.com \
--cc=fstests@vger.kernel.org \
--cc=guaneryu@gmail.com \
--cc=linux-unionfs@vger.kernel.org \
--cc=lubos@dolezel.info \
--cc=miklos@szeredi.hu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.