From patchwork Thu Feb 15 06:40:10 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andre Heider X-Patchwork-Id: 873664 X-Patchwork-Delegate: sjg@chromium.org 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" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="WbM4UPJ5"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zhmqd3PtKz9s7M for ; Thu, 15 Feb 2018 17:40:28 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id B76C4C2208D; Thu, 15 Feb 2018 06:40:19 +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=FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, 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 01AC8C21F4D; Thu, 15 Feb 2018 06:40:17 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 5809DC21F4D; Thu, 15 Feb 2018 06:40:15 +0000 (UTC) Received: from mail-wr0-f196.google.com (mail-wr0-f196.google.com [209.85.128.196]) by lists.denx.de (Postfix) with ESMTPS id E3975C21C3F for ; Thu, 15 Feb 2018 06:40:14 +0000 (UTC) Received: by mail-wr0-f196.google.com with SMTP id k32so2211501wrk.4 for ; Wed, 14 Feb 2018 22:40:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=DMKTB8767m5YxhhYKg1cKEfadEGEY+cPaImA2M5UOjo=; b=WbM4UPJ5MWg0xdnPgAa5NT9LZYum2ODLgO690nad9soUdLUS84FXpaiXCyLvH7OY2g LiN9Jm52D7YccdMinHMPEEJurGjA5625eyYPQC8bt/OZH0G50E7vrV8fujg5j1wiIwEJ GEOEANe40BpLzI5nqHEoOa8s6ZOCt6flSfMEATPHW5iE7WPE+E4pl/uYjYfj61wsynl0 8ZLriEYpk6NbOvL9uC9u87deYb+65ficHzdrRg0dnOTgXb7nQIVmDNccMEa9HtN5naLq UEfcCGcb3zAutqaRMvz6ddc0Uuj9v0Hw2F6dfmI6GqJ+SDEcUUEl4Dc7bD3TL2LFk7pS yU1A== 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; bh=DMKTB8767m5YxhhYKg1cKEfadEGEY+cPaImA2M5UOjo=; b=mnMVhBFdl4nCid798BrXD5f29MriIUwXrO27z4hiH7Hpepr8P08Sm/7WU1rmNfcLmM ODAvRslOz7GhTqAZU63+E+U3AKdvAIU0pzbHIqWjvJIdMxlo4f7NC/mcoTZf/mr41ctu qqE5YoujmeJRIK5JzaON7jP4stVB6RZaEtTzYYJUNaqJkVx/fvJxhe+lQGaJ5Ia+c5Tw FYL4azdwHF69huRhsINFe0ZhmRKnUuTH75T+DROse562ufndF8FHbMjW97HzNUwaQyEH C1Y1S+pCSJGuvC/O+uBkL9TEvicXk3327hxythIaoIVZr60SXB/iqjCiiZbwlT24inDg uY1A== X-Gm-Message-State: APf1xPAivgFRLAhFvs538TJytnprNUEIlfFJob9yU2tXASttUIZQD4uE DrPvu71ASf0KJy9g1tE4VKR/Ig== X-Google-Smtp-Source: AH8x225XnYPWNfHwIAmdYDRQ7GIYMD8ZcsvW8bUp/tHdnjVUOj8rNxmcZs4Ux5oFO+7Q3SsuO7JrSQ== X-Received: by 10.223.184.88 with SMTP id u24mr1311938wrf.3.1518676814270; Wed, 14 Feb 2018 22:40:14 -0800 (PST) Received: from mamamia.internal (a89-182-101-87.net-htp.de. [89.182.101.87]) by smtp.gmail.com with ESMTPSA id x203sm28410443wmd.11.2018.02.14.22.40.13 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 14 Feb 2018 22:40:13 -0800 (PST) From: Andre Heider To: u-boot@lists.denx.de Date: Thu, 15 Feb 2018 07:40:10 +0100 Message-Id: <20180215064012.28557-1-a.heider@gmail.com> X-Mailer: git-send-email 2.16.1 Subject: [U-Boot] [PATCH 1/3] cmd: cbfs: fix reading the end_of_rom pointer for 64bit archs 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" The cast breaks the pointer on 64bit archs, so lets get rid of it. Signed-off-by: Andre Heider Reviewed-by: Alexander Graf --- cmd/cbfs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/cbfs.c b/cmd/cbfs.c index 799ba01fcc..736f8c4527 100644 --- a/cmd/cbfs.c +++ b/cmd/cbfs.c @@ -22,7 +22,7 @@ static int do_cbfs_init(cmd_tbl_t *cmdtp, int flag, int argc, return 0; } if (argc == 2) { - end_of_rom = (int)simple_strtoul(argv[1], &ep, 16); + end_of_rom = simple_strtoul(argv[1], &ep, 16); if (*ep) { puts("\n** Invalid end of ROM **\n"); return 1; From patchwork Thu Feb 15 06:40:11 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andre Heider X-Patchwork-Id: 873665 X-Patchwork-Delegate: sjg@chromium.org 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" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="ZRCme4Cc"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zhmrh59GMz9s7M for ; Thu, 15 Feb 2018 17:41:24 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 5D199C22062; Thu, 15 Feb 2018 06:40:38 +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=FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED, 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 A22B7C22087; Thu, 15 Feb 2018 06:40:18 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 66DFBC21F4D; Thu, 15 Feb 2018 06:40:16 +0000 (UTC) Received: from mail-wm0-f65.google.com (mail-wm0-f65.google.com [74.125.82.65]) by lists.denx.de (Postfix) with ESMTPS id 0D988C21C3F for ; Thu, 15 Feb 2018 06:40:16 +0000 (UTC) Received: by mail-wm0-f65.google.com with SMTP id t74so26883297wme.3 for ; Wed, 14 Feb 2018 22:40:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=VkNV/va4NK+HNdjSDi7rBXBfDfz7HTqq4CHV22bJaf0=; b=ZRCme4Ccq0YMoKfu03zflUwN8Vfq+rm5l1aq3vzxOb85XJtbg8GpN/BDwcq+Oty0v+ 36SMaWNbWouO6QgzpS6/W6MUkj7Dt5i9T8y0CwCai5fCjADPmuFgOI8LpOlb8qzrkH+N xf5R3KFBeRcoHb1koSZ6kIw9jma75PETUqVQYaYHpwVyXQX3u82TGS/5kuII5oOXQrN2 VeCZiaDMtJ0QqahwOSREaWY4LSgNZMiRX9Gz1KyKA7STlyjPad6zawRfK8Pc8fddOyv4 gZpUTtBoeS2PpUCSbJRDEPK97Tavm0/wqCdF7BvqOKxY3xopUF92tedDPeBosqn9+Lhx CBew== 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=VkNV/va4NK+HNdjSDi7rBXBfDfz7HTqq4CHV22bJaf0=; b=cM/J9KZAoWG6u5JexswWcN05nIu8sYkY9WAwCRd3llmXLuDaKJgfXacAEMvdiHBe35 LZUrKSLsuUGggskkqsGRpb3RK5ZysyYavX0pajns7bKJI+BOdotAOM6U+bdIVUKc4ILM FWtz2KWKF8whzwjmrrCf2TmgBCfaLjTOVkRi+SiHW5vQMfXkB3/i422LX20YaZXLIPvO Mlgx3NVOiUVzVNIpMDCY1KZDT8SNgcmFxpx1SghhuEIdyl90tXu5VmRg3VQRSnXHtCyb FpDFm+iiwQz0ee8Piv0JxbLWLxRIFp3atzygBk+V+YcakB8F4Sxjc5Jm5MMm92zLCrwh f4Mg== X-Gm-Message-State: APf1xPA8RuCOhH+Xz+G0XJ3t2AD+ZgKeJtgE+mXDSX8TGMObRy8iMv/B xR1nj6MRZjBOMxv7tDLXihW34Q== X-Google-Smtp-Source: AH8x225NSV6aEihfjlrIBvCpSFiKe7G5fqEPCpzl301s8hP1DMu3sQgTX7mxLBDBgZ8CJNGVcAHx6w== X-Received: by 10.28.165.130 with SMTP id o124mr924102wme.122.1518676815273; Wed, 14 Feb 2018 22:40:15 -0800 (PST) Received: from mamamia.internal (a89-182-101-87.net-htp.de. [89.182.101.87]) by smtp.gmail.com with ESMTPSA id x203sm28410443wmd.11.2018.02.14.22.40.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 14 Feb 2018 22:40:14 -0800 (PST) From: Andre Heider To: u-boot@lists.denx.de Date: Thu, 15 Feb 2018 07:40:11 +0100 Message-Id: <20180215064012.28557-2-a.heider@gmail.com> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180215064012.28557-1-a.heider@gmail.com> References: <20180215064012.28557-1-a.heider@gmail.com> Subject: [U-Boot] [PATCH 2/3] fs: cbfs: fix locating the cbfs header 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" The value at the end of the rom is not a pointer, it is an offset relative to the end of rom. Signed-off-by: Andre Heider Reviewed-by: Simon Glass --- fs/cbfs/cbfs.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/cbfs/cbfs.c b/fs/cbfs/cbfs.c index 6e1107d751..46da8f134f 100644 --- a/fs/cbfs/cbfs.c +++ b/fs/cbfs/cbfs.c @@ -168,9 +168,9 @@ static int file_cbfs_load_header(uintptr_t end_of_rom, struct cbfs_header *header) { struct cbfs_header *header_in_rom; + int32_t offset = *(u32 *)(end_of_rom - 3); - header_in_rom = (struct cbfs_header *)(uintptr_t) - *(u32 *)(end_of_rom - 3); + header_in_rom = (struct cbfs_header *)(end_of_rom + offset + 1); swap_header(header, header_in_rom); if (header->magic != good_magic || header->offset > From patchwork Thu Feb 15 06:40:12 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andre Heider X-Patchwork-Id: 873666 X-Patchwork-Delegate: sjg@chromium.org 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" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="Y5JweEuY"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zhms11ZjMz9sR8 for ; Thu, 15 Feb 2018 17:41:41 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id D7CCEC220A3; Thu, 15 Feb 2018 06:40:56 +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=FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED, 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 C4C82C22061; Thu, 15 Feb 2018 06:40:26 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 844C8C220A7; Thu, 15 Feb 2018 06:40:20 +0000 (UTC) Received: from mail-wm0-f66.google.com (mail-wm0-f66.google.com [74.125.82.66]) by lists.denx.de (Postfix) with ESMTPS id 5CD80C22051 for ; Thu, 15 Feb 2018 06:40:17 +0000 (UTC) Received: by mail-wm0-f66.google.com with SMTP id h74so1239590wme.5 for ; Wed, 14 Feb 2018 22:40:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=joMczw+ry96p2BfaA6/Ht6gHJW4h+YT5Z4NpSCSIy4s=; b=Y5JweEuYs4mLDSesrk43ZPU7opAFPR/JsIL9zCQxAaiTWhgWwMtCyrvy1a+wlxPgUd 1weDuoEpnKKI112A+f02XXCVnd0LqATZQQgBp8Vf1QNk/BrD1svfc4aWh52OmhDxPD/e 31FAkogt6b14i7gF/sNi2aP1dxwVUrer2W75SlcU/8fKmQKpNKQuy+SQOMtMafVl9me5 48FizRyZ8MqIMo89FG2EZvO3XuEW1fzIf+MY2BF3NML+7K4HLUnlG/Vz9eXILy9Fhi/y Su4p7YoMrbm9HKzX6l/OjJHZbaltg1utcNqjhob+yDsnMjMoU7Sju4QLOefFGlL0sUe9 /Svw== 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=joMczw+ry96p2BfaA6/Ht6gHJW4h+YT5Z4NpSCSIy4s=; b=rAtnBzahSqISxfW+X3ryup01xLUC1BFCvHZLOOvS0dcBaBPef17Dvl1AlsTvM3uKFh /7VWiX3gthEJdPWaNdue5MHsPcPsayYG8BLaJn39Roo+NM7qT5L2BBW8kjXdG8Mic8wy C9oAQqH3Ubuxiacmz5WPTtEW7QlTRWurD5UUjRuDJhyq2JskaZ755+DOkYg21KRQeuji YwoULD1X/CoyU6/cdrGhZpZJP5cEdJobY8Box2dWRVCpWhEImNX79ilFZdAx+p5s4mqE X99n2f7Gl5roVBNOzzHYHz5v/js5nEZ437q8rq9AXrGUq8vkigkLCIWcia5OWKy1TFdg 4GmQ== X-Gm-Message-State: APf1xPAaUaFq/OrrnlfShfwh4+idfrOCZO5pf9oOwGi4OPHPHFXVCJGC tPAttrhYTTbJNcGNQ8/iyRrBjg== X-Google-Smtp-Source: AH8x226Cctiys0F/KF7Bx0PYv0a7Ctg8rKmcTL7BiVbZ8n+Ilp0luL7E/h6LZJOIRbL0v90p/fsNGg== X-Received: by 10.28.90.197 with SMTP id o188mr1075668wmb.136.1518676816631; Wed, 14 Feb 2018 22:40:16 -0800 (PST) Received: from mamamia.internal (a89-182-101-87.net-htp.de. [89.182.101.87]) by smtp.gmail.com with ESMTPSA id x203sm28410443wmd.11.2018.02.14.22.40.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 14 Feb 2018 22:40:15 -0800 (PST) From: Andre Heider To: u-boot@lists.denx.de Date: Thu, 15 Feb 2018 07:40:12 +0100 Message-Id: <20180215064012.28557-3-a.heider@gmail.com> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180215064012.28557-1-a.heider@gmail.com> References: <20180215064012.28557-1-a.heider@gmail.com> Subject: [U-Boot] [PATCH 3/3] cbfs: add support for cbfs header components 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" This fixes walking the cbfs file list because the bound checks do not apply to header components. Output of coreboot's cbfstool: Name Offset Type Size Comp cbfs master header 0x0 cbfs header 32 none fallback/romstage 0x80 stage 21344 none fallback/ramstage 0x5440 stage 36848 none config 0xe480 raw 310 none revision 0xe600 raw 575 none fallback/bl31 0xe880 payload 15931 none fallback/payload 0x12700 payload 205449 none (empty) 0x44a00 null 111768 none header pointer 0x5fec0 cbfs header 4 none Output of u-boot's cbfsls: size type name ------------------------------------------ 32 cbfs header cbfs master header 21344 stage fallback/romstage 36848 stage fallback/ramstage 310 raw config 575 raw revision 15931 payload fallback/bl31 205449 payload fallback/payload 111768 null (empty) 4 cbfs header header pointer Signed-off-by: Andre Heider --- cmd/cbfs.c | 3 +++ fs/cbfs/cbfs.c | 10 ++++++---- include/cbfs.h | 1 + 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/cmd/cbfs.c b/cmd/cbfs.c index 736f8c4527..f5ad04c45a 100644 --- a/cmd/cbfs.c +++ b/cmd/cbfs.c @@ -113,6 +113,9 @@ static int do_cbfs_ls(cmd_tbl_t *cmdtp, int flag, int argc, printf(" %8d", file_cbfs_size(file)); switch (type) { + case CBFS_COMPONENT_CBFSHEADER: + type_name = "cbfs header"; + break; case CBFS_TYPE_STAGE: type_name = "stage"; break; diff --git a/fs/cbfs/cbfs.c b/fs/cbfs/cbfs.c index 46da8f134f..389f60702b 100644 --- a/fs/cbfs/cbfs.c +++ b/fs/cbfs/cbfs.c @@ -97,10 +97,12 @@ static int file_cbfs_next_file(u8 *start, u32 size, u32 align, } swap_file_header(&header, fileHeader); - if (header.offset < sizeof(struct cbfs_fileheader) || - header.offset > header.len) { - file_cbfs_result = CBFS_BAD_FILE; - return -1; + if (header.type != CBFS_COMPONENT_CBFSHEADER) { + if (header.offset < sizeof(struct cbfs_fileheader) || + header.offset > header.len) { + file_cbfs_result = CBFS_BAD_FILE; + return -1; + } } newNode->next = NULL; newNode->type = header.type; diff --git a/include/cbfs.h b/include/cbfs.h index f50280107b..d5d9d8ce97 100644 --- a/include/cbfs.h +++ b/include/cbfs.h @@ -19,6 +19,7 @@ enum cbfs_result { }; enum cbfs_filetype { + CBFS_COMPONENT_CBFSHEADER = 0x02, CBFS_TYPE_STAGE = 0x10, CBFS_TYPE_PAYLOAD = 0x20, CBFS_TYPE_OPTIONROM = 0x30,