From patchwork Mon Apr 16 05:59:03 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heinrich Schuchardt X-Patchwork-Id: 898470 X-Patchwork-Delegate: agraf@suse.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=gmx.de Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 40Pd6r06Nhz9s0t for ; Mon, 16 Apr 2018 16:01:23 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 96F4BC21DCA; Mon, 16 Apr 2018 06:00:21 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.7 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_DNSWL_LOW autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 504D4C21DE8; Mon, 16 Apr 2018 05:59:23 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 96D7DC21CB6; Mon, 16 Apr 2018 05:59:19 +0000 (UTC) Received: from mout.gmx.net (mout.gmx.net [212.227.17.22]) by lists.denx.de (Postfix) with ESMTPS id 14436C21BE5 for ; Mon, 16 Apr 2018 05:59:19 +0000 (UTC) Received: from LPT2.fritz.box ([62.143.246.157]) by mail.gmx.com (mrgmx101 [212.227.17.174]) with ESMTPSA (Nemesis) id 0MSIf1-1f2CYH1Lfn-00TWE6; Mon, 16 Apr 2018 07:59:18 +0200 From: Heinrich Schuchardt To: Alexander Graf Date: Mon, 16 Apr 2018 07:59:03 +0200 Message-Id: <20180416055910.12611-2-xypron.glpk@gmx.de> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180416055910.12611-1-xypron.glpk@gmx.de> References: <20180416055910.12611-1-xypron.glpk@gmx.de> X-Provags-ID: V03:K1:gjL0sTK9ZxdHJwgPuqfk9Mh6EI4OVEegJVzDmOUQD/KmBdERy0F 5GWQSua+XHDrI1vvY86wHu4C5Nmjs5MG+ZEZZqddxW8MChk1ijjgkDeKvvAe/vbDQNb6J95 lQ0ji3tpHAakGIYtmiA0Gq7CNHsCNO4h3dTyMCw7aWp1P8iDsuP6eE/l+/a14Es2tzTBas/ 5s3/Ogzg06Xh95TzhC4Dw== X-UI-Out-Filterresults: notjunk:1; V01:K0:Z9Jia6bvFag=:YY1/TmpKDiGgUvXnH8yjjz Gi2VgmlGmhi7JMQ8HqvoJv/cMYCMBijisurx2I4aevKVGLkwj68rzBFs+EPPY9C/pRdzDQmkC FQIIUsFY8t3oXc86eG/XpmwcejLDTgoYvjPm11f3M46kGYRVyCMFjp2QtiSOpgFCEGhl1F6cK vOSC06M/qxHZ9cEqzA5PYADqWdVz4YUMi+GVPUYcf/jpVtp8yGdZYI7JsvE1s76ltF5dp336P 3nbWXPHO4TxlPqOThNF4l9jrCn3u1iHJKwtQMzh8gpacP7XTSEH9orWtMayUaw1Pv+QUzEijz qnv98egFeolZgpCK6j4rk/5cM8gKjbUk6o+I3Q08BDwYIqFyXQfh0MDEIZBinrmy3u4nQESo9 vMRDL4kS+0mrd4rP0MOfLT87x0jGSw5g5orEZoZ52HtxTzWw1NQ3Wg+fcNijPCWoMmGZvMvLM Nf6L/8sCfaEKdDWw6Alk3AmwoZ59wq4Milk//0kRRMex6wGO8k+4kBAsrFU+kfsgu5ksNPn/O Rk+RwHVufj3USBuqOrLsZCr53ndhpscpO7N2k+O+l+3Lohl+gHnvecAqX/veaq5XQnTQh5S6J 9HkbIsHSFOHbGYAxp4UcjArB684RevKnPGvvKR8O5hcsqSZlUr6niaBIqfbFI3CNOLm5CkXVs r6YVB7vR7FhN4Ujxryn2Pn9nPJ7nUGw2jEtNRMDqP4WVBY6QO0sKWWc/Pp/1R5npeyOCblC2E G99Chz2QwWGlwzh8GzrHSH+YV0c822+10/2ralXEXjl8GY4HuAIEQhbLzEcxxwgqD9474+fIy n8Cv3diwYDNH+nWKOu8AzgL2cK1Ig== Cc: u-boot@lists.denx.de, Heinrich Schuchardt Subject: [U-Boot] [PATCH v2 1/8] efi_selftest: do not execute test if setup failed X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Executing a test after failed setup may lead to unexpected behavior like an illegal memory access. So after a setup failure we should skip to teardown. Signed-off-by: Heinrich Schuchardt --- v2 no change --- include/efi_selftest.h | 2 ++ lib/efi_selftest/efi_selftest.c | 14 +++++++------- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/include/efi_selftest.h b/include/efi_selftest.h index 08dd8e43ad..c23bc24bed 100644 --- a/include/efi_selftest.h +++ b/include/efi_selftest.h @@ -114,6 +114,7 @@ u16 efi_st_get_key(void); * @setup: set up the unit test * @teardown: tear down the unit test * @execute: execute the unit test + * @setup_ok: setup was successful (set at runtime) * @on_request: test is only executed on request */ struct efi_unit_test { @@ -123,6 +124,7 @@ struct efi_unit_test { const struct efi_system_table *systable); int (*execute)(void); int (*teardown)(void); + int setup_ok; bool on_request; }; diff --git a/lib/efi_selftest/efi_selftest.c b/lib/efi_selftest/efi_selftest.c index fc5ef254a1..fd4fee726f 100644 --- a/lib/efi_selftest/efi_selftest.c +++ b/lib/efi_selftest/efi_selftest.c @@ -77,20 +77,20 @@ void efi_st_exit_boot_services(void) */ static int setup(struct efi_unit_test *test, unsigned int *failures) { - int ret; - - if (!test->setup) + if (!test->setup) { + test->setup_ok = EFI_ST_SUCCESS; return EFI_ST_SUCCESS; + } efi_st_printc(EFI_LIGHTBLUE, "\nSetting up '%s'\n", test->name); - ret = test->setup(handle, systable); - if (ret != EFI_ST_SUCCESS) { + test->setup_ok = test->setup(handle, systable); + if (test->setup_ok != EFI_ST_SUCCESS) { efi_st_error("Setting up '%s' failed\n", test->name); ++*failures; } else { efi_st_printc(EFI_LIGHTGREEN, "Setting up '%s' succeeded\n", test->name); } - return ret; + return test->setup_ok; } /* @@ -200,7 +200,7 @@ void efi_st_do_tests(const u16 *testname, unsigned int phase, continue; if (steps & EFI_ST_SETUP) setup(test, failures); - if (steps & EFI_ST_EXECUTE) + if (steps & EFI_ST_EXECUTE && test->setup_ok == EFI_ST_SUCCESS) execute(test, failures); if (steps & EFI_ST_TEARDOWN) teardown(test, failures);