From patchwork Thu May 20 05:15:40 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 12269043 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B566EC433B4 for ; Thu, 20 May 2021 05:19:20 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 26B4F6105A for ; Thu, 20 May 2021 05:19:20 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 26B4F6105A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=amsat.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:41236 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljb5b-0006cI-7S for qemu-devel@archiver.kernel.org; Thu, 20 May 2021 01:19:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:54458) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljb2L-0003Ns-UB; Thu, 20 May 2021 01:15:57 -0400 Received: from mail-wm1-x334.google.com ([2a00:1450:4864:20::334]:45632) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljb2I-0002Vx-8q; Thu, 20 May 2021 01:15:57 -0400 Received: by mail-wm1-x334.google.com with SMTP id s5-20020a7bc0c50000b0290147d0c21c51so4421806wmh.4; Wed, 19 May 2021 22:15:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=TLM11x+CwA7dtccb1VwoEJf/uXmEpf+a+h0Tdo5AASA=; b=owbqZCRqWupKJwYUVgi5yJSS+TDgiXrJzgnOCT1KlQ5+3cMbDB5xWc1Mtn+HeWeWg8 zT2xxHrjRn08Goh5ZWCJhC9FHsiiOBriF+pc1uMSkQ2JH/rcIWzhKWTUmFQVUyW/5nNc 1hObPoHPygemN1uhyC+Wgz6CAau6ZaIXnmQDyZl88ebDwpzKS2/io/YMZXg4yXggVomr JntIww/3Rs81OWgkyr46GDWQMmF76b4xsQzI0yVM6oBVPFt+u8iwj6O66Kfafu9X6PZA Zc/EAhb1a3PVcLyLpg3yih7aUFuvxQgf4cb905VnIiV4qGKO9MxFPgpSqyhIQvUXEC+z iIzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=TLM11x+CwA7dtccb1VwoEJf/uXmEpf+a+h0Tdo5AASA=; b=Xa4OLrwRpDPBJdymnuWT/FfhkaTqgHe7xm0Fp40xrFD09akgJSsdA39wjhGbCl+sSf KKqEpQLQ3txj3GbMLfX3227BzbKg5XH9RfE0MOT8KV2GFCYlt9LIkO+FQNUuIfdxh2fg +7ohAjiZ2dR7WrfhMMAGX1LybEQ0WtSuUIk432Zgsh7S/gx1EhPdhBczS17/7MGtphJT 7VjpvgjXNzeLfpvjo0N+bK3/PW4GSC9Cf+xmNj2lz1iVpVnP2VCL8nH5OdaXcRCaUn1E tYFyEL29c9th9hcfupjZJq4vDNkN6dCwA7o1Vr3uVROfKtEgpYMyPxbAwmLh7I06iKDW y1Qw== X-Gm-Message-State: AOAM533vC8dYphA9j/Xv1b91Sh9LYwMYgaeiKdCwfSlt0V8GxrXagZKy qrbMaTIiToNe7lOyNUYT/5K3CcdbhehtpA== X-Google-Smtp-Source: ABdhPJy3f01MKam21I/98mQDJb1njf1uZPZZ4J8u9p2CtqcrkPWbpxVMfyHf3UdGV9+F7n5Pkd7jww== X-Received: by 2002:a1c:e484:: with SMTP id b126mr2097270wmh.35.1621487749623; Wed, 19 May 2021 22:15:49 -0700 (PDT) Received: from x1w.redhat.com (31.red-83-51-215.dynamicip.rima-tde.net. [83.51.215.31]) by smtp.gmail.com with ESMTPSA id v18sm1938897wro.18.2021.05.19.22.15.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 22:15:49 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH v3 1/3] hw/arm/boot: Abort if set_kernel_args() fails Date: Thu, 20 May 2021 07:15:40 +0200 Message-Id: <20210520051542.2378774-2-f4bug@amsat.org> X-Mailer: git-send-email 2.26.3 In-Reply-To: <20210520051542.2378774-1-f4bug@amsat.org> References: <20210520051542.2378774-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::334; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-x334.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.25, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , qemu-arm@nongnu.org, =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" If a address_space_write() call fails while calling set_kernel_args(), the guest kernel will boot using crap data. Avoid that by aborting if this ever occurs. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Peter Maydell --- hw/arm/boot.c | 53 ++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 42 insertions(+), 11 deletions(-) diff --git a/hw/arm/boot.c b/hw/arm/boot.c index d7b059225e6..0c1346d5842 100644 --- a/hw/arm/boot.c +++ b/hw/arm/boot.c @@ -291,15 +291,20 @@ static inline bool have_dtb(const struct arm_boot_info *info) #define WRITE_WORD(p, value) do { \ address_space_stl_notdirty(as, p, value, \ - MEMTXATTRS_UNSPECIFIED, NULL); \ + MEMTXATTRS_UNSPECIFIED, &result); \ + if (result != MEMTX_OK) { \ + goto fail; \ + } \ p += 4; \ } while (0) -static void set_kernel_args(const struct arm_boot_info *info, AddressSpace *as) +/* Returns: 0 on success, -1 on error */ +static int set_kernel_args(const struct arm_boot_info *info, AddressSpace *as) { int initrd_size = info->initrd_size; hwaddr base = info->loader_start; hwaddr p; + MemTxResult result; p = base + KERNEL_ARGS_ADDR; /* ATAG_CORE */ @@ -326,8 +331,11 @@ static void set_kernel_args(const struct arm_boot_info *info, AddressSpace *as) int cmdline_size; cmdline_size = strlen(info->kernel_cmdline); - address_space_write(as, p + 8, MEMTXATTRS_UNSPECIFIED, - info->kernel_cmdline, cmdline_size + 1); + result = address_space_write(as, p + 8, MEMTXATTRS_UNSPECIFIED, + info->kernel_cmdline, cmdline_size + 1); + if (result != MEMTX_OK) { + goto fail; + } cmdline_size = (cmdline_size >> 2) + 1; WRITE_WORD(p, cmdline_size + 2); WRITE_WORD(p, 0x54410009); @@ -341,22 +349,31 @@ static void set_kernel_args(const struct arm_boot_info *info, AddressSpace *as) atag_board_len = (info->atag_board(info, atag_board_buf) + 3) & ~3; WRITE_WORD(p, (atag_board_len + 8) >> 2); WRITE_WORD(p, 0x414f4d50); - address_space_write(as, p, MEMTXATTRS_UNSPECIFIED, - atag_board_buf, atag_board_len); + result = address_space_write(as, p, MEMTXATTRS_UNSPECIFIED, + atag_board_buf, atag_board_len); + if (result != MEMTX_OK) { + goto fail; + } p += atag_board_len; } /* ATAG_END */ WRITE_WORD(p, 0); WRITE_WORD(p, 0); + + return 0; +fail: + return -1; } -static void set_kernel_args_old(const struct arm_boot_info *info, - AddressSpace *as) +/* Returns: 0 on success, -1 on error */ +static int set_kernel_args_old(const struct arm_boot_info *info, + AddressSpace *as) { hwaddr p; const char *s; int initrd_size = info->initrd_size; hwaddr base = info->loader_start; + MemTxResult result; /* see linux/include/asm-arm/setup.h */ p = base + KERNEL_ARGS_ADDR; @@ -419,10 +436,18 @@ static void set_kernel_args_old(const struct arm_boot_info *info, } s = info->kernel_cmdline; if (s) { - address_space_write(as, p, MEMTXATTRS_UNSPECIFIED, s, strlen(s) + 1); + result = address_space_write(as, p, MEMTXATTRS_UNSPECIFIED, + s, strlen(s) + 1); + if (result != MEMTX_OK) { + goto fail; + } } else { WRITE_WORD(p, 0); } + + return 0; +fail: + return -1; } static int fdt_add_memory_node(void *fdt, uint32_t acells, hwaddr mem_base, @@ -786,10 +811,16 @@ static void do_cpu_reset(void *opaque) cpu_set_pc(cs, info->loader_start); if (!have_dtb(info)) { + int err; + if (old_param) { - set_kernel_args_old(info, as); + err = set_kernel_args_old(info, as); } else { - set_kernel_args(info, as); + err = set_kernel_args(info, as); + } + if (err) { + error_report("could not set kernel arguments"); + exit(1); } } } else { From patchwork Thu May 20 05:15:41 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 12269045 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0C096C433ED for ; Thu, 20 May 2021 05:21:15 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id B09B5611BD for ; Thu, 20 May 2021 05:21:14 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B09B5611BD Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=amsat.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:43506 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljb7R-0008Io-RI for qemu-devel@archiver.kernel.org; Thu, 20 May 2021 01:21:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:54480) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljb2N-0003OW-3B; Thu, 20 May 2021 01:15:59 -0400 Received: from mail-wr1-x42c.google.com ([2a00:1450:4864:20::42c]:39616) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljb2K-0002Xx-SV; Thu, 20 May 2021 01:15:58 -0400 Received: by mail-wr1-x42c.google.com with SMTP id v12so16184423wrq.6; Wed, 19 May 2021 22:15:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=trGsGaryNWUPxAJDqUIpevE5ZbWH+x1Qd17FpqljBXA=; b=AHnpVKmwyHn+wNukIPjogA6Hkn8d1dioPdVLsZvuaYcQaSfNG+Ku+jDM1G9nm+r6RV RmGLf6+rYeeG1E2lQw3ShzO80YPxyiadK8BAJ/BsrKxlfDr7IwLoH+HpqyzZn+/zEl98 c8RxHV0XbuHY27dFqq1XD5F1FM1u7wke3vHz1mCApubSh3skua3LVaZ+DJ4C4mzgTWPz r0RymMS5AEuZ262UNDF3TinQ/1URa929gtMyfinmI4U10gSS1PCzIkGx8YxY5RZSzkHK b0wZxH9kOmhHmqqYQ/zVeC2x+108z6eTj6PTVwSPaIfY8F6iA/mPYO7QIrjKvkNXKvZr QjaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=trGsGaryNWUPxAJDqUIpevE5ZbWH+x1Qd17FpqljBXA=; b=Lgx15aaI2Nv4wws15gw6FpwXFNkWVaEsqP7fOnh1Bd91KaWXf3lrNtIGx7vchBziRO pF2WdwUIsJbXR1O2TFIaDtWsn3P5LbBIYW0SpuEugtEUmT1LbM5uhVJJdW40p4K7yERe UjLLPxnM6pzAJkGHTyjQY2so/mfAwhrsrjzL6VT+jInl79ZD/Y8Zf137PsOAa9mHQ7UA pY0tpzbN2fBnduT2E2I5kT5DoRrnrpmV1YgEQiL5nmWjEMD0g1cUiFWRuS2QHs9HGcB4 rzSLRxwjw/w280QEoamUpawE4CrnwNtSPFNRGBzhq2FlZeGO1bxhKgjd8ZbLhT5A/NS8 qjTw== X-Gm-Message-State: AOAM532sJ1zZOeaYnyMH54vYc5CuQT49t23+T7Xx1PFTzJ8OwylTNicz p0ZLWyzs9GVxroU+ojgUjCoCVeVN264qCQ== X-Google-Smtp-Source: ABdhPJwAs938B/qTch6yIjZy5/2PxuGX5dTuRq0Q/X5uFzXlk2G8Of//2cBPIk6n4YRgU9kjr5W1GQ== X-Received: by 2002:a5d:6ac2:: with SMTP id u2mr2155073wrw.272.1621487754552; Wed, 19 May 2021 22:15:54 -0700 (PDT) Received: from x1w.redhat.com (31.red-83-51-215.dynamicip.rima-tde.net. [83.51.215.31]) by smtp.gmail.com with ESMTPSA id p5sm1730612wrd.25.2021.05.19.22.15.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 22:15:54 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH v3 2/3] hw/core/loader: Move 'write_rom' trace event earlier Date: Thu, 20 May 2021 07:15:41 +0200 Message-Id: <20210520051542.2378774-3-f4bug@amsat.org> X-Mailer: git-send-email 2.26.3 In-Reply-To: <20210520051542.2378774-1-f4bug@amsat.org> References: <20210520051542.2378774-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::42c; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-x42c.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.25, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , qemu-arm@nongnu.org, =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" It is more useful to trace the event which will happen, rather than missing an event that failed. So move the 'write_rom' trace event earlier. Signed-off-by: Philippe Mathieu-Daudé --- hw/core/loader.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/hw/core/loader.c b/hw/core/loader.c index 5b34869a541..b3c4a654b45 100644 --- a/hw/core/loader.c +++ b/hw/core/loader.c @@ -1142,6 +1142,7 @@ static void rom_reset(void *unused) if (rom->data == NULL) { continue; } + trace_loader_write_rom(rom->name, rom->addr, rom->datasize, rom->isrom); if (rom->mr) { void *host = memory_region_get_ram_ptr(rom->mr); memcpy(host, rom->data, rom->datasize); @@ -1160,8 +1161,6 @@ static void rom_reset(void *unused) * CPU definitely fetches its instructions from the just written data. */ cpu_flush_icache_range(rom->addr, rom->datasize); - - trace_loader_write_rom(rom->name, rom->addr, rom->datasize, rom->isrom); } } From patchwork Thu May 20 05:15:42 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 12269047 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5D6C5C433B4 for ; Thu, 20 May 2021 05:23:52 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id C2F58611AE for ; Thu, 20 May 2021 05:23:51 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C2F58611AE Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=amsat.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:45970 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljb9y-0001bR-Qo for qemu-devel@archiver.kernel.org; Thu, 20 May 2021 01:23:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:54540) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljb2V-0003TB-NA; Thu, 20 May 2021 01:16:07 -0400 Received: from mail-wr1-x42e.google.com ([2a00:1450:4864:20::42e]:44984) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljb2Q-0002bD-7D; Thu, 20 May 2021 01:16:07 -0400 Received: by mail-wr1-x42e.google.com with SMTP id i17so16164596wrq.11; Wed, 19 May 2021 22:16:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=mcAunA11//sOCKzq7CO3/y2yGuInMfq776cnfd5eSQU=; b=TsDEf1u9CG1+cYkqPoVDdeXsrLXMbD9IG6YmCWu+UKOxBalK1Oc9XSLCW1xJ0cUldK NVhhMFLKCknoh+ih01EDDv6pkDxpw3F6b6Hj88q9M6UlowuyfaM4uakFnqFIfrUoqbhR WKZn1h1M4hmGOHDhbcf2Mg3ufiTe4NWjJ3Z1XWo/J8/OPct4v382tcfTWR6jUt+JvyIO XK2mySBf3vuMAjpMIgIPShPhoeMDOzb/tS+F3yadDH7PaaSJsT4ZqLYyEFeg082KoCPP gpgMN06BYOm9+OWaQodVROSG+zhvw9eXFjMMqu5UI+W5IYCh1Lprt9oSkd09zh2aMoPS FFoA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=mcAunA11//sOCKzq7CO3/y2yGuInMfq776cnfd5eSQU=; b=NhYPZ56kW0Hcd/xv/rvpZ7/8sH0FQKiYUABnmpM+TQOSzKP0m+tKPflRxfQgBh7gBc ONZ3yX6XhoK05vOcNItSiwpQYTv9+jlgeMYzkg4UhF3Qz0zKBZpdCpNRvMcNKj86G7mC Q6T/OnjI0BhpldxV4/FPAIQBXcAHyUU4j3tJ+ohq7Z6068FqBm0H3aDhtMTd+3oJoycI T595jBxOMgjO0/GaIbZIMsC7pDAKSA+eQKO39mrxEuYvvxQ6zr712nGCUC9YfHdTR/28 uUjxnkkFPhYlEa5p2VI9vLghKDM256stX0E30T9Do81dlr/rbMdtL+cdIOjbT3eMst07 A7Hg== X-Gm-Message-State: AOAM5328tkjwUwBxdHndFO8sEihwoSqf3APouhL607WVObauSHHCKlWC Nfo7HjG3JPWh3rbSrlt1nnh470vlNDR+TQ== X-Google-Smtp-Source: ABdhPJwfLv98WFvrQLDPk3/XAbIEiMwoocDNyG+9ri0d2AiuYPhT7Pp/yIC5QRyDV0vFBaRorVMvTw== X-Received: by 2002:adf:f80f:: with SMTP id s15mr2148251wrp.341.1621487759624; Wed, 19 May 2021 22:15:59 -0700 (PDT) Received: from x1w.redhat.com (31.red-83-51-215.dynamicip.rima-tde.net. [83.51.215.31]) by smtp.gmail.com with ESMTPSA id p10sm1567272wrr.58.2021.05.19.22.15.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 May 2021 22:15:59 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH v3 3/3] hw/core/loader: Warn if we fail to load ROM regions at reset Date: Thu, 20 May 2021 07:15:42 +0200 Message-Id: <20210520051542.2378774-4-f4bug@amsat.org> X-Mailer: git-send-email 2.26.3 In-Reply-To: <20210520051542.2378774-1-f4bug@amsat.org> References: <20210520051542.2378774-1-f4bug@amsat.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::42e; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-x42e.google.com X-Spam_score_int: -14 X-Spam_score: -1.5 X-Spam_bar: - X-Spam_report: (-1.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.25, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , qemu-arm@nongnu.org, =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" If the user provides an ELF file that's been linked to a wrong address, we try to load it, fails, and keep going silently. Instead, Display a warning instead, but keep going to not disrupt users accidentally relying on this 'continues-anyway' behaviour. Signed-off-by: Philippe Mathieu-Daudé --- hw/core/loader.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/hw/core/loader.c b/hw/core/loader.c index b3c4a654b45..37a2f2c4959 100644 --- a/hw/core/loader.c +++ b/hw/core/loader.c @@ -1147,8 +1147,16 @@ static void rom_reset(void *unused) void *host = memory_region_get_ram_ptr(rom->mr); memcpy(host, rom->data, rom->datasize); } else { - address_space_write_rom(rom->as, rom->addr, MEMTXATTRS_UNSPECIFIED, - rom->data, rom->datasize); + MemTxResult res; + + res = address_space_write_rom(rom->as, rom->addr, + MEMTXATTRS_UNSPECIFIED, + rom->data, rom->datasize); + if (res != MEMTX_OK) { + warn_report("rom: unable to write data (file '%s', " + "addr=0x" TARGET_FMT_plx ", size=0x%zu)", + rom->name, rom->addr, rom->datasize); + } } if (rom->isrom) { /* rom needs to be written only once */