Received: by 10.223.185.116 with SMTP id b49csp5534614wrg; Tue, 27 Feb 2018 15:20:00 -0800 (PST) X-Google-Smtp-Source: AH8x225+MPvfAc+adyPlVbL0cSdB1llUZaqb1FYxOktdjZLdbR5VKtoW+RAQC2QwmNNjQVfTk03s X-Received: by 10.98.130.72 with SMTP id w69mr15727202pfd.69.1519773600089; Tue, 27 Feb 2018 15:20:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519773600; cv=none; d=google.com; s=arc-20160816; b=YcfAubh+O1RFE/AjBoHFpgNR8VIZ9RsZR4X7ikhTVJKo8Iy2qhnPxD5j2G+nm7ILjA HHqnHvfoqNr9rTXwPedPm/GisMsek6+tPUfjBgVEvwNoVeaXj6p+JOFCP1dfVbaXh/Xy D56a4NJ1klZZnTMV/L+qRJTR4vTNuRAGhBQ8oBlDH7ccxPyLKnn7zULSB50Q1OGf2skD FGl03pCTTvp0ZJERjBfMKqikEfO55L24NWzKZyjgpfbuGdE4M5lnRe7eTnUOWSfcNSLv GbV8TGYAZ2GzAf2H/PW2VeJTUmwAm2Z1bczxdtWv+N3PqWGOTRw9uiZWgjLN/2lVpZ7C NfxQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature:dkim-signature :arc-authentication-results; bh=RCStORM3KLC1yQsyLCWIZOTuiyl0cOicnh5cHTFD3jg=; b=Hvl/xKqqfJQIN7/+QhUw6w5oUmFMZtvXzMInRTFPW2DzElym94EuB1f2pm0Ws6x1K8 G/NZOdeKjEwCvrT+6/lzfVPItw4HG4712jGfI/zwvzZGcbB/t5YkeINHeUHreLKIFzr8 lcQMJ5iI+moBooCJL3K8umkIDNrCN6VVN8lgSZob1piYU7jiUJ59aJu7Xgk/T5WFznxL hgyEITyQg7CF4FJ9R9mlppPHEwhvE2ZDytKuoDoJw1m1m9PzITA5dxVK6vjVFW42/mz0 fLKzc2hQTR1QmAvTtdzmDA3oJT6Riwa9Eoi36ED3TrGCimCv+TltcKpHaYJFVpomuf7c esUw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@google.com header.s=20161025 header.b=HUO5NTpB; dkim=fail header.i=@chromium.org header.s=google header.b=Yvb5dIc0; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 5-v6si202291plt.371.2018.02.27.15.19.44; Tue, 27 Feb 2018 15:20:00 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=fail header.i=@google.com header.s=20161025 header.b=HUO5NTpB; dkim=fail header.i=@chromium.org header.s=google header.b=Yvb5dIc0; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752083AbeB0XST (ORCPT + 99 others); Tue, 27 Feb 2018 18:18:19 -0500 Received: from mail-ua0-f194.google.com ([209.85.217.194]:46984 "EHLO mail-ua0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751779AbeB0XSR (ORCPT ); Tue, 27 Feb 2018 18:18:17 -0500 Received: by mail-ua0-f194.google.com with SMTP id n48so351977uae.13 for ; Tue, 27 Feb 2018 15:18:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=RCStORM3KLC1yQsyLCWIZOTuiyl0cOicnh5cHTFD3jg=; b=HUO5NTpBuJw327oufjbdF4f36Slq9whBQuz1ubf/mvUXt9xTWYboggUaUrZchVaTJm 4yptu9l9Bven0wAe4pSoyqF6CPzwD4mylJOsFLDT/DSxr4FEREddFUoPW6bT17/OT/6r 5vOD0zWOe8ytKkFgIOi+C3v3JYnMG6zKnkTIIZRi5mQFOpTV11+xvt2tKa1XSOXtwkPt CPW5/W8atyNUN5Q4/aNiqQmbIlXGcVkuoNilsfddJPEfAi1sMuCKDvUr6eU6er4P5bec ElE5OiJi4pb6hfrNkT9BVuQJaYAusQlNbIN6/rtE8YtHhCalAA5c3EDqqchGJeF+SrzI 1HrA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=RCStORM3KLC1yQsyLCWIZOTuiyl0cOicnh5cHTFD3jg=; b=Yvb5dIc0waC0Zvzv2Kl6cBntyRHyOIXyz/w4s6pLMsZsEMVYJuuBhraj+eiZ4sBHLw SzbzljkkjxDlw5dN92Y102nqPHqGQsuiF9QWHfrGfI3inwN4qkkidCeV0L6YG8N5AP32 IvQJMjiYaNtftsC9YaBlm68X3Fh1ry58Rjngk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=RCStORM3KLC1yQsyLCWIZOTuiyl0cOicnh5cHTFD3jg=; b=lvcfMCPYxHG7Yv6s/Go7u58SXYLp9aIxnOrRyjGNamPj10GhstJ1/3ppAv8mcUqXwC pxGFCwxo3kXf606aDGSaVT60n4frh4oxF7tz71xbytBLeIZxYkUNnpl3pkluczzKwbwg uc+XCKZMfkttb7G8w9lDRAqk1NwoWqw1P3rmKYDQZ/gs1BAuVdH2wBLl4HUEBsUWn+Vg jbGaCyxMxHSa9L57XeevrcZTBeAlhQFGW6B0KNJT3EOSTZv7i+TvTPdZi4hy6hJuTP/K PJG2iSbSpV+lo/WfmnzdmMp0namSuiLeQS2xLLVf7NZuILjdyCDh1GGZpDhORaRvTA5C kIjA== X-Gm-Message-State: APf1xPA88y73tkyIkYOzY55OFMvWc4IRNSomVIRrLR1MCEe+GjACCU8U iXUlGc/Rt76syDtkx/cLt5A3DNqaJSAcPbgjqrj6uA== X-Received: by 10.159.54.227 with SMTP id p90mr8891203uap.74.1519773496316; Tue, 27 Feb 2018 15:18:16 -0800 (PST) MIME-Version: 1.0 Received: by 10.31.242.140 with HTTP; Tue, 27 Feb 2018 15:18:15 -0800 (PST) In-Reply-To: <20180224024613.24078-12-mcgrof@kernel.org> References: <20180224024613.24078-1-mcgrof@kernel.org> <20180224024613.24078-12-mcgrof@kernel.org> From: Kees Cook Date: Tue, 27 Feb 2018 15:18:15 -0800 X-Google-Sender-Auth: LexbnLj9n3Nqmne1v2shm8inG-M Message-ID: Subject: Re: [PATCH v2 11/11] test_firmware: test three firmware kernel configs using a proc knob To: "Luis R. Rodriguez" Cc: Greg KH , Andrew Morton , Shuah Khan , Martin Fuzzey , Mimi Zohar , David Howells , pali.rohar@gmail.com, Takashi Iwai , arend.vanspriel@broadcom.com, =?UTF-8?B?UmFmYcWCIE1pxYJlY2tp?= , nbroeking@me.com, Vikram Mulukutla , stephen.boyd@linaro.org, Mark Brown , Dmitry Torokhov , David Woodhouse , Linus Torvalds , Abhay_Salunke@dell.com, bjorn.andersson@linaro.org, jewalt@lgsinnovations.com, LKML , "linux-fsdevel@vger.kernel.org" Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Feb 23, 2018 at 6:46 PM, Luis R. Rodriguez wrote: > Since we now have knobs to twiddle what used to be set on kernel > configurations we can build one base kernel configuration and modify > behaviour to mimic such kernel configurations to test them. > > Provided you build a kernel with: > > CONFIG_TEST_FIRMWARE=y > CONFIG_FW_LOADER=y > CONFIG_FW_LOADER_USER_HELPER=y > CONFIG_IKCONFIG=y > CONFIG_IKCONFIG_PROC=y > > We should now be able test all possible kernel configurations > when FW_LOADER=y. Note that when FW_LOADER=m we just don't provide > the built-in functionality of the built-in firmware. > > If you're on an old kernel and either don't have /proc/config.gz > (CONFIG_IKCONFIG_PROC) or haven't enabled CONFIG_FW_LOADER_USER_HELPER > we cannot run these dynamic tests, so just run both scripts just > as we used to before making blunt assumptions about your setup > and requirements exactly as we did before. > > Signed-off-by: Luis R. Rodriguez Cool. Nice to have it all in one test build now. :) Acked-by: Kees Cook -Kees > --- > tools/testing/selftests/firmware/Makefile | 2 +- > tools/testing/selftests/firmware/fw_lib.sh | 53 +++++++++++++++++++ > tools/testing/selftests/firmware/fw_run_tests.sh | 67 ++++++++++++++++++++++++ > 3 files changed, 121 insertions(+), 1 deletion(-) > create mode 100755 tools/testing/selftests/firmware/fw_run_tests.sh > > diff --git a/tools/testing/selftests/firmware/Makefile b/tools/testing/selftests/firmware/Makefile > index 1894d625af2d..826f38d5dd19 100644 > --- a/tools/testing/selftests/firmware/Makefile > +++ b/tools/testing/selftests/firmware/Makefile > @@ -3,7 +3,7 @@ > # No binaries, but make sure arg-less "make" doesn't trigger "run_tests" > all: > > -TEST_PROGS := fw_filesystem.sh fw_fallback.sh > +TEST_PROGS := fw_run_tests.sh > > include ../lib.mk > > diff --git a/tools/testing/selftests/firmware/fw_lib.sh b/tools/testing/selftests/firmware/fw_lib.sh > index 0702dbf0f06b..3362a2aac40e 100755 > --- a/tools/testing/selftests/firmware/fw_lib.sh > +++ b/tools/testing/selftests/firmware/fw_lib.sh > @@ -47,6 +47,34 @@ check_setup() > { > HAS_FW_LOADER_USER_HELPER=$(kconfig_has CONFIG_FW_LOADER_USER_HELPER=y) > HAS_FW_LOADER_USER_HELPER_FALLBACK=$(kconfig_has CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y) > + PROC_FW_IGNORE_SYSFS_FALLBACK="N" > + PROC_FW_FORCE_SYSFS_FALLBACK="N" > + > + if [ -z $PROC_SYS_DIR ]; then > + PROC_SYS_DIR="/proc/sys/kernel" > + fi > + > + FW_PROC="${PROC_SYS_DIR}/firmware_config" > + FW_FORCE_SYSFS_FALLBACK="$FW_PROC/force_sysfs_fallback" > + FW_IGNORE_SYSFS_FALLBACK="$FW_PROC/ignore_sysfs_fallback" > + > + if [ -f $FW_FORCE_SYSFS_FALLBACK ]; then > + PROC_FW_FORCE_SYSFS_FALLBACK=$(cat $FW_FORCE_SYSFS_FALLBACK) > + fi > + > + if [ -f $FW_IGNORE_SYSFS_FALLBACK ]; then > + PROC_FW_IGNORE_SYSFS_FALLBACK=$(cat $FW_IGNORE_SYSFS_FALLBACK) > + fi > + > + if [ "$PROC_FW_IGNORE_SYSFS_FALLBACK" = "1" ]; then > + HAS_FW_LOADER_USER_HELPER_FALLBACK="no" > + HAS_FW_LOADER_USER_HELPER="no" > + fi > + > + if [ "$PROC_FW_FORCE_SYSFS_FALLBACK" = "1" ]; then > + HAS_FW_LOADER_USER_HELPER="yes" > + HAS_FW_LOADER_USER_HELPER_FALLBACK="yes" > + fi > > if [ "$HAS_FW_LOADER_USER_HELPER" = "yes" ]; then > OLD_TIMEOUT=$(cat /sys/class/firmware/timeout) > @@ -76,6 +104,30 @@ setup_tmp_file() > fi > } > > +proc_set_force_sysfs_fallback() > +{ > + if [ -f $FW_FORCE_SYSFS_FALLBACK ]; then > + echo -n $1 > $FW_FORCE_SYSFS_FALLBACK > + PROC_FW_FORCE_SYSFS_FALLBACK=$(cat $FW_FORCE_SYSFS_FALLBACK) > + check_setup > + fi > +} > + > +proc_set_ignore_sysfs_fallback() > +{ > + if [ -f $FW_IGNORE_SYSFS_FALLBACK ]; then > + echo -n $1 > $FW_IGNORE_SYSFS_FALLBACK > + PROC_FW_IGNORE_SYSFS_FALLBACK=$(cat $FW_IGNORE_SYSFS_FALLBACK) > + check_setup > + fi > +} > + > +proc_restore_defaults() > +{ > + proc_set_force_sysfs_fallback 0 > + proc_set_ignore_sysfs_fallback 0 > +} > + > test_finish() > { > if [ "$HAS_FW_LOADER_USER_HELPER" = "yes" ]; then > @@ -93,6 +145,7 @@ test_finish() > if [ -d $FWPATH ]; then > rm -rf "$FWPATH" > fi > + proc_restore_defaults > } > > kconfig_has() > diff --git a/tools/testing/selftests/firmware/fw_run_tests.sh b/tools/testing/selftests/firmware/fw_run_tests.sh > new file mode 100755 > index 000000000000..a12b5809ad8b > --- /dev/null > +++ b/tools/testing/selftests/firmware/fw_run_tests.sh > @@ -0,0 +1,67 @@ > +#!/bin/bash > +# SPDX-License-Identifier: GPL-2.0 > + > +# This runs all known tests across all known possible configurations we could > +# emulate in one run. > + > +set -e > + > +TEST_DIR=$(dirname $0) > +source $TEST_DIR/fw_lib.sh > + > +run_tests() > +{ > + $TEST_DIR/fw_filesystem.sh > + $TEST_DIR/fw_fallback.sh > +} > + > +run_test_config_0001() > +{ > + echo "-----------------------------------------------------" > + echo "Running kernel configuration test 1 -- rare" > + echo "Emulates:" > + echo "CONFIG_FW_LOADER=y" > + echo "CONFIG_FW_LOADER_USER_HELPER=n" > + echo "CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n" > + proc_set_force_sysfs_fallback 0 > + proc_set_ignore_sysfs_fallback 1 > + run_tests > +} > + > +run_test_config_0002() > +{ > + echo "-----------------------------------------------------" > + echo "Running kernel configuration test 2 -- distro" > + echo "Emulates:" > + echo "CONFIG_FW_LOADER=y" > + echo "CONFIG_FW_LOADER_USER_HELPER=y" > + echo "CONFIG_FW_LOADER_USER_HELPER_FALLBACK=n" > + proc_set_force_sysfs_fallback 0 > + proc_set_ignore_sysfs_fallback 0 > + run_tests > +} > + > +run_test_config_0003() > +{ > + echo "-----------------------------------------------------" > + echo "Running kernel configuration test 3 -- android" > + echo "Emulates:" > + echo "CONFIG_FW_LOADER=y" > + echo "CONFIG_FW_LOADER_USER_HELPER=y" > + echo "CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y" > + proc_set_force_sysfs_fallback 1 > + proc_set_ignore_sysfs_fallback 0 > + run_tests > +} > + > +check_mods > +check_setup > + > +if [ -f $FW_FORCE_SYSFS_FALLBACK ]; then > + run_test_config_0001 > + run_test_config_0002 > + run_test_config_0003 > +else > + echo "Running basic kernel configuration, working with your config" > + run_test > +fi > -- > 2.16.2 > -- Kees Cook Pixel Security