From patchwork Wed Dec 27 12:25:59 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bryan O'Donoghue X-Patchwork-Id: 853162 X-Patchwork-Delegate: sbabic@denx.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; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.b="RSuhB4IA"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3z6CLY2Nsqz9s7h for ; Wed, 27 Dec 2017 23:47:49 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id BE5DEC21C59; Wed, 27 Dec 2017 12:38:09 +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.0 required=5.0 tests=RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, T_DKIM_INVALID 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 6038BC21EA6; Wed, 27 Dec 2017 12:33:14 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 4FFF9C21C8F; Wed, 27 Dec 2017 12:26:39 +0000 (UTC) Received: from mail-wm0-f67.google.com (mail-wm0-f67.google.com [74.125.82.67]) by lists.denx.de (Postfix) with ESMTPS id EC43FC21C4A for ; Wed, 27 Dec 2017 12:26:38 +0000 (UTC) Received: by mail-wm0-f67.google.com with SMTP id f206so38984774wmf.5 for ; Wed, 27 Dec 2017 04:26:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=rARE3KQTDAxLPvsUva9zRYIWT6s3y/avy27Vb+03NIY=; b=RSuhB4IAdefz6n2iJg23CXU7TduntGefbAnSmStTA6Go15NRWYyMsEVg3+4rLv2vtd YDn37p9v1zKHnJCxxnUM1JW1uScpSL1+7EqtQcYJF5egg3gmhjoBWzXWRCM99sWFxb0l v3eX7U8xh0lpqrdw4tPf4WaB6g5M+R9rnhqsU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=rARE3KQTDAxLPvsUva9zRYIWT6s3y/avy27Vb+03NIY=; b=YT7LdBLjEOB8Mfxji0bbRpnQNLf3Rlf0mJJY68hrH5pZ8jYVbUq9qr5xtu+PAGma5o B2DgJqUlWxZP0NavrHkwIr0Igc4LQH8bl8JeK9mbd36UKHYaAcZaU9brqn5G3AuAh8ks kZoH82uGSxokN5bTk5HEZFrAind7T0pNHdZGXJTx82VDcId+SWVqbob7evLErWWax7YP nDRUbQIGFippfh11pMNDTPKFaOJd8kx65kHjITZdFIOgVPL7reUqUrzSEEigrV9A+wR7 Ku/bVDV9Q16z0q+2W3cRWjVY3n77T1jF1Qg626ZfHQmLB0OQ+kdhWDnmBNBmWuUnT9TD BC3Q== X-Gm-Message-State: AKGB3mLP0CCUYc9mOjV1gvG4dX1Zdz0KQpnjsunbDMhS/G19plEDC1cz +hhTMts3u4svRXkEa6CxXsGOHXRa8Mg= X-Google-Smtp-Source: ACJfBotFAjgk9xSoOaZle6s/QoQ+C18lt0E5heLj2kBR/qQIufAftVvxnpgOj5lTuoI1lq76ZZ7fFg== X-Received: by 10.80.169.123 with SMTP id m56mr34579449edc.126.1514377598290; Wed, 27 Dec 2017 04:26:38 -0800 (PST) Received: from localhost.localdomain ([109.255.42.2]) by smtp.gmail.com with ESMTPSA id a5sm28388838edm.47.2017.12.27.04.26.37 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 27 Dec 2017 04:26:37 -0800 (PST) From: Bryan O'Donoghue To: u-boot@lists.denx.de Date: Wed, 27 Dec 2017 12:25:59 +0000 Message-Id: <1514377566-28512-17-git-send-email-bryan.odonoghue@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1514377566-28512-1-git-send-email-bryan.odonoghue@linaro.org> References: <1514377566-28512-1-git-send-email-bryan.odonoghue@linaro.org> X-Mailman-Approved-At: Wed, 27 Dec 2017 12:32:58 +0000 Cc: Fabio Estevam Subject: [U-Boot] [PATCH 16/23] arm: imx: hab: Add a hab_rvt_check_target to image auth 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" Add a hab_rvt_check_target() step to authenticate_image() as a sanity check for the target memory region authenticate_image() will run over, prior to making the BootROM authentication callback itself. This check is recommended by the HAB documentation so it makes sense to adhere to the guidance and perform that check as directed. Signed-off-by: Bryan O'Donoghue Cc: Stefano Babic Cc: Fabio Estevam Cc: Peng Fan Cc: Albert Aribaud Cc: Sven Ebenfeld Cc: George McCollister --- arch/arm/mach-imx/hab.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/arch/arm/mach-imx/hab.c b/arch/arm/mach-imx/hab.c index 8d0e3e1..58bc510 100644 --- a/arch/arm/mach-imx/hab.c +++ b/arch/arm/mach-imx/hab.c @@ -437,12 +437,15 @@ int authenticate_image(uint32_t ddr_start, uint32_t image_size, hab_rvt_authenticate_image_t *hab_rvt_authenticate_image; hab_rvt_entry_t *hab_rvt_entry; hab_rvt_exit_t *hab_rvt_exit; + hab_rvt_check_target_t *hab_rvt_check_target; struct ivt *ivt; struct ivt_header *ivt_hdr; + enum hab_status status; hab_rvt_authenticate_image = hab_rvt_authenticate_image_p; hab_rvt_entry = hab_rvt_entry_p; hab_rvt_exit = hab_rvt_exit_p; + hab_rvt_check_target = hab_rvt_check_target_p; if (!is_hab_enabled()) { puts("hab fuse not enabled\n"); @@ -477,6 +480,13 @@ int authenticate_image(uint32_t ddr_start, uint32_t image_size, start = ddr_start; bytes = image_size; + + status = hab_rvt_check_target(HAB_TGT_MEMORY, (void *)ddr_start, bytes); + if (status != HAB_SUCCESS) { + printf("HAB check target 0x%08x-0x%08x fail\n", + ddr_start, ddr_start + bytes); + goto hab_caam_clock_disable; + } #ifdef DEBUG printf("\nivt_offset = 0x%x, ivt addr = 0x%x\n", ivt_offset, ivt_addr); printf("ivt entry = 0x%08x, dcd = 0x%08x, csf = 0x%08x\n", ivt->entry,