From patchwork Fri Nov 4 20:58:28 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Biggers X-Patchwork-Id: 13032565 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3D854C4332F for ; Fri, 4 Nov 2022 20:59:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229567AbiKDU7T (ORCPT ); Fri, 4 Nov 2022 16:59:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52636 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229495AbiKDU7S (ORCPT ); Fri, 4 Nov 2022 16:59:18 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5741CCE16; Fri, 4 Nov 2022 13:59:16 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 05EF9B82FBA; Fri, 4 Nov 2022 20:59:15 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8F0C2C433D6; Fri, 4 Nov 2022 20:59:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1667595553; bh=ST3IYM4B6dddb9c3HsGD3Pz8XYBRhWCrkIuJ9yRrTEE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=GCn9s649zHyODFpekuaqYPn/FkHOAT/2Sm1eas8E3gy2WE/5jvPCk3X8O2gh8flSJ R43zhvaXij74WFt6hEvzKo3uWB7V4oBGotqMtr3qL2QbxWz/hORqWGLPszPah7sEKG IDdcxTXSOIXt+nB7iW32MDq6vSD9KeciNbqknra7Yz0eN5XtJzx4qMx5UiNdC9Qnmk 0b6gSl9pPfa7UtBWOL5U1RJDRHkD8RrVQ7e744wdvDVOCxeXPjVXOq6tU5AznTnpvy wC1Os3ZTQIw6cis/QLDZRUax9X0uSbxpBaNASyAvi9csgrp5S862l/e39y3dvmoUrD dDH0AcPIfE2Fw== From: Eric Biggers To: fstests@vger.kernel.org Cc: linux-fscrypt@vger.kernel.org, Andrey Albershteyn Subject: [xfstests PATCH v2 1/3] common/verity: fix _fsv_have_hash_algorithm() with required signatures Date: Fri, 4 Nov 2022 13:58:28 -0700 Message-Id: <20221104205830.130132-2-ebiggers@kernel.org> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221104205830.130132-1-ebiggers@kernel.org> References: <20221104205830.130132-1-ebiggers@kernel.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-fscrypt@vger.kernel.org From: Eric Biggers _fsv_have_hash_algorithm() uses _fsv_enable() without a signature, so it always fails when called while fs.verity.require_signatures=1. This happens in generic/577, which tests file signing. This wasn't noticed because it just made part of generic/577 always be skipped. Fix this by making _fsv_have_hash_algorithm() temporarily set fs.verity.require_signatures to 0. Since the previous value needs to be restored afterwards, whether it is 0 or 1, also make some changes to the fs.verity.require_signatures helper functions to allow the restoration of the previous value, rather than the value that existed at the beginning of the test. Finally, make a couple related cleanups: make _fsv_have_hash_algorithm() always delete the file it works with, and also update the similar code in _require_scratch_verity(). Reported-by: Andrey Albershteyn Reviewed-by: Andrey Albershteyn Signed-off-by: Eric Biggers --- common/verity | 58 ++++++++++++++++++++++++++++++++------------------- 1 file changed, 37 insertions(+), 21 deletions(-) diff --git a/common/verity b/common/verity index 65a39d3e..f98dcb07 100644 --- a/common/verity +++ b/common/verity @@ -44,12 +44,13 @@ _require_scratch_verity() # doesn't work on ext3-style filesystems. So, try actually using it. echo foo > $SCRATCH_MNT/tmpfile _disable_fsverity_signatures - if ! _fsv_enable $SCRATCH_MNT/tmpfile; then - _restore_fsverity_signatures + _fsv_enable $SCRATCH_MNT/tmpfile + local status=$? + _restore_prev_fsverity_signatures + rm -f $SCRATCH_MNT/tmpfile + if (( $status != 0 )); then _notrun "$FSTYP verity isn't usable by default with these mkfs options" fi - _restore_fsverity_signatures - rm -f $SCRATCH_MNT/tmpfile _scratch_unmount @@ -105,10 +106,7 @@ _fsv_load_cert() _disable_fsverity_signatures() { if [ -e /proc/sys/fs/verity/require_signatures ]; then - if [ -z "$FSVERITY_SIG_CTL_ORIG" ]; then - FSVERITY_SIG_CTL_ORIG=$( /proc/sys/fs/verity/require_signatures + _set_fsverity_require_signatures 0 fi } @@ -116,18 +114,36 @@ _disable_fsverity_signatures() # This assumes that _require_fsverity_builtin_signatures() was called. _enable_fsverity_signatures() { - if [ -z "$FSVERITY_SIG_CTL_ORIG" ]; then - FSVERITY_SIG_CTL_ORIG=$( /proc/sys/fs/verity/require_signatures + _set_fsverity_require_signatures 1 } -# Restore the original signature verification setting. +# Restore the original value of fs.verity.require_signatures, i.e. the value it +# had at the beginning of the test. _restore_fsverity_signatures() { - if [ -n "$FSVERITY_SIG_CTL_ORIG" ]; then - echo "$FSVERITY_SIG_CTL_ORIG" > /proc/sys/fs/verity/require_signatures - fi + if [ -n "$FSVERITY_SIG_CTL_ORIG" ]; then + _set_fsverity_require_signatures "$FSVERITY_SIG_CTL_ORIG" + fi +} + +# Restore the previous value of fs.verity.require_signatures, i.e. the value it +# had just before it was last written to. +_restore_prev_fsverity_signatures() +{ + if [ -n "$FSVERITY_SIG_CTL_PREV" ]; then + _set_fsverity_require_signatures "$FSVERITY_SIG_CTL_PREV" + fi +} + +_set_fsverity_require_signatures() +{ + local newval=$1 + local oldval=$( /proc/sys/fs/verity/require_signatures } # Require userspace and kernel support for 'fsverity dump_metadata'. @@ -245,14 +261,14 @@ _fsv_have_hash_algorithm() local hash_alg=$1 local test_file=$2 + _disable_fsverity_signatures rm -f $test_file head -c 4096 /dev/zero > $test_file - if ! _fsv_enable --hash-alg=$hash_alg $test_file &>> $seqres.full; then - # no kernel support - return 1 - fi + _fsv_enable --hash-alg=$hash_alg $test_file &>> $seqres.full + local status=$? + _restore_prev_fsverity_signatures rm -f $test_file - return 0 + return $status } # From patchwork Fri Nov 4 20:58:29 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Biggers X-Patchwork-Id: 13032566 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E2F04C43217 for ; Fri, 4 Nov 2022 20:59:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229495AbiKDU7T (ORCPT ); Fri, 4 Nov 2022 16:59:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52638 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229496AbiKDU7S (ORCPT ); Fri, 4 Nov 2022 16:59:18 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 74FC93E0AB; Fri, 4 Nov 2022 13:59:16 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 3BB8DB82F9E; Fri, 4 Nov 2022 20:59:15 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id CC46CC433B5; Fri, 4 Nov 2022 20:59:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1667595553; bh=z2Z7oAEeLI3ZtcvGG/yWA4vtLSrNDZaa0EypXjklsjg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=WjUcRwpkGlPpEIz74z0t9I6dvVM6yO0LF6aaryuceMVy0Y9d0kLYaqwIkSPXTYFen aowiybg5vAb3ysHTcK+2IGtJuHvYKfQrfAlK8hTTLSeWu3C2d21KQNQt1687FVkbIB L/mPCkIkC/cc2Nis4s6RgIdWLxyxAML1tq03Xs1E7UFEd29U1Sh4wM/8hghKLNZl3V hd7QThj/DAgyo6HmeN5v9RdcKTNqRf3lFOlZaE7IhplGwOZ5CyC1kD0RJ4eRPJ97xN rTOByCiNMZTgkOEIHuTpkSc0Fiohb5hNYds2Wx0Yx4Mx3GsGzPcxuMzbVhd7qXRy+Z EnTjLKwKUS6NQ== From: Eric Biggers To: fstests@vger.kernel.org Cc: linux-fscrypt@vger.kernel.org, Andrey Albershteyn Subject: [xfstests PATCH v2 2/3] generic/577: add missing file removal before empty file test Date: Fri, 4 Nov 2022 13:58:29 -0700 Message-Id: <20221104205830.130132-3-ebiggers@kernel.org> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221104205830.130132-1-ebiggers@kernel.org> References: <20221104205830.130132-1-ebiggers@kernel.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-fscrypt@vger.kernel.org From: Eric Biggers The fix for _fsv_have_hash_algorithm() exposed a bug where one of the test cases in generic/577 isn't deleting the file from the previous test case before it tries to write to it. That causes a failure, since due to the fix for _fsv_have_hash_algorithm(), the file from the previous test case now ends up with verity enabled and therefore cannot be written to. Fix this by deleting the file. Reported-by: Andrey Albershteyn Reviewed-by: Andrey Albershteyn Signed-off-by: Eric Biggers --- tests/generic/577 | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/generic/577 b/tests/generic/577 index 98c3888f..5f7e0573 100755 --- a/tests/generic/577 +++ b/tests/generic/577 @@ -121,6 +121,7 @@ if _fsv_have_hash_algorithm sha512 $fsv_file; then fi echo -e "\n# Testing empty file" +rm -f $fsv_file echo -n > $fsv_file _fsv_sign $fsv_file $sigfile.emptyfile --key=$keyfile --cert=$certfile | \ _filter_scratch From patchwork Fri Nov 4 20:58:30 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Biggers X-Patchwork-Id: 13032567 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A4EADC43219 for ; Fri, 4 Nov 2022 20:59:21 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229496AbiKDU7U (ORCPT ); Fri, 4 Nov 2022 16:59:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52642 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229501AbiKDU7S (ORCPT ); Fri, 4 Nov 2022 16:59:18 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EECC243871; Fri, 4 Nov 2022 13:59:16 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 8780FB82FBC; Fri, 4 Nov 2022 20:59:15 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 14F9FC43470; Fri, 4 Nov 2022 20:59:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1667595554; bh=kbJgc+So+lixQa5sA0cnuaYsYA5o80LPhq/HVcNCT4k=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=VYwmq07Ea5nd1lxhH/vkxYo74ZXDJ73UhAAnVA0DyjLvdLSRyglKF4VjagjfopvzC RhByKI5TBTpuNCIYfu/ma+UNSjbB//fRCpdAP4FeNfZ/c61NCaLQUk6mg9slYej423 03rd3Yxiqmx/bAXUKLwVctzCdZ3YJ7ujarHtZfOeUN8OQsaIaJstR5AelLkxgN05c5 70NJy0HjrKGvgiOCRk9cU23ZygPbW/jGMggq6MB1EhOtfuPQIsX7GeO4ZClLP9SVZX WjCkX47UpG0kdAHzx0mZMYmLyr5UQyYfWpergiBnUaPIy78QeMHCTkrN8hf5zhHYmc xpj6AAY2+wx4g== From: Eric Biggers To: fstests@vger.kernel.org Cc: linux-fscrypt@vger.kernel.org, Andrey Albershteyn Subject: [xfstests PATCH v2 3/3] tests: fix some tests for systems with fs.verity.require_signatures=1 Date: Fri, 4 Nov 2022 13:58:30 -0700 Message-Id: <20221104205830.130132-4-ebiggers@kernel.org> X-Mailer: git-send-email 2.38.1 In-Reply-To: <20221104205830.130132-1-ebiggers@kernel.org> References: <20221104205830.130132-1-ebiggers@kernel.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-fscrypt@vger.kernel.org From: Eric Biggers Some of the newer verity tests don't work properly on systems where fs.verity.require_signatures is enabled, either because they forget to disable it at the beginning of the test, or they forget to re-enable it afterwards, or both. Fix this. Reviewed-by: Andrey Albershteyn Signed-off-by: Eric Biggers --- tests/btrfs/290 | 9 +++++++++ tests/btrfs/291 | 2 ++ tests/generic/624 | 8 ++++++++ tests/generic/692 | 8 ++++++++ 4 files changed, 27 insertions(+) diff --git a/tests/btrfs/290 b/tests/btrfs/290 index b7254c5e..06a58f47 100755 --- a/tests/btrfs/290 +++ b/tests/btrfs/290 @@ -15,6 +15,14 @@ _begin_fstest auto quick verity . ./common/filter . ./common/verity +# Override the default cleanup function. +_cleanup() +{ + cd / + _restore_fsverity_signatures + rm -f $tmp.* +} + # real QA test starts here _supported_fs btrfs _require_scratch_verity @@ -24,6 +32,7 @@ _require_xfs_io_command "falloc" _require_xfs_io_command "pread" _require_xfs_io_command "pwrite" _require_btrfs_corrupt_block +_disable_fsverity_signatures get_ino() { local file=$1 diff --git a/tests/btrfs/291 b/tests/btrfs/291 index bbdd183d..c5947133 100755 --- a/tests/btrfs/291 +++ b/tests/btrfs/291 @@ -23,6 +23,7 @@ _cleanup() rm -f $img $LVM_PROG vgremove -f -y $vgname >>$seqres.full 2>&1 losetup -d $loop_dev >>$seqres.full 2>&1 + _restore_fsverity_signatures } # Import common functions. @@ -43,6 +44,7 @@ _require_command $LVM_PROG lvm _require_scratch_verity _require_btrfs_command inspect-internal dump-tree _require_test_program "log-writes/replay-log" +_disable_fsverity_signatures sync_loop() { i=$1 diff --git a/tests/generic/624 b/tests/generic/624 index 89fbf256..7c447289 100755 --- a/tests/generic/624 +++ b/tests/generic/624 @@ -10,6 +10,14 @@ . ./common/preamble _begin_fstest auto quick verity +# Override the default cleanup function. +_cleanup() +{ + cd / + _restore_fsverity_signatures + rm -f $tmp.* +} + . ./common/filter . ./common/verity diff --git a/tests/generic/692 b/tests/generic/692 index 0bb1fd33..d6da734b 100644 --- a/tests/generic/692 +++ b/tests/generic/692 @@ -15,6 +15,13 @@ . ./common/preamble _begin_fstest auto quick verity +# Override the default cleanup function. +_cleanup() +{ + cd / + _restore_fsverity_signatures + rm -f $tmp.* +} # Import common functions. . ./common/filter @@ -26,6 +33,7 @@ _require_test _require_math _require_scratch_verity _require_fsverity_max_file_size_limit +_disable_fsverity_signatures _scratch_mkfs_verity &>> $seqres.full _scratch_mount