From patchwork Fri Mar 8 01:32:14 2019 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: 1053324 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=redhat.com Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 44Fqwv2CPXz9s9N for ; Fri, 8 Mar 2019 12:41:51 +1100 (AEDT) Received: from localhost ([127.0.0.1]:34606 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h24WD-0000vy-0i for incoming@patchwork.ozlabs.org; Thu, 07 Mar 2019 20:41:49 -0500 Received: from eggs.gnu.org ([209.51.188.92]:58074) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h24P7-0003ES-5S for qemu-devel@nongnu.org; Thu, 07 Mar 2019 20:34:30 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1h24P4-0001nu-Vh for qemu-devel@nongnu.org; Thu, 07 Mar 2019 20:34:29 -0500 Received: from mx1.redhat.com ([209.132.183.28]:33796) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1h24P0-0001i9-O6; Thu, 07 Mar 2019 20:34:22 -0500 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id A6A04C0578F8; Fri, 8 Mar 2019 01:34:18 +0000 (UTC) Received: from x1w.redhat.com (unknown [10.40.206.18]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 6B83E6B473; Fri, 8 Mar 2019 01:34:11 +0000 (UTC) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: Laszlo Ersek , Gerd Hoffmann , "Michael S. Tsirkin" , qemu-devel@nongnu.org Date: Fri, 8 Mar 2019 02:32:14 +0100 Message-Id: <20190308013222.12524-11-philmd@redhat.com> In-Reply-To: <20190308013222.12524-1-philmd@redhat.com> References: <20190308013222.12524-1-philmd@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Fri, 08 Mar 2019 01:34:18 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v2 10/18] hw/nvram/fw_cfg: Add reboot_timeout to FWCfgState X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Thomas Huth , Eduardo Habkost , Mark Cave-Ayland , "Dr. David Alan Gilbert" , Markus Armbruster , qemu-arm@nongnu.org, qemu-ppc@nongnu.org, Igor Mammedov , Paolo Bonzini , David Gibson , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Artyom Tarasenko , Richard Henderson Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Due to the contract interface of fw_cfg_add_file(), the 'reboot_timeout' data has to be valid for the lifetime of the FwCfg object. For this reason it is copied on the heap with memdup(). The object state, 'FWCfgState', is also meant to be valid during the lifetime of the object. Move the 'reboot_timeout' in FWCfgState to achieve the same purpose. Doing so we avoid a memory leak. Signed-off-by: Philippe Mathieu-Daudé --- hw/nvram/fw_cfg.c | 4 +++- include/hw/nvram/fw_cfg.h | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c index b73a591eff..182d27f59a 100644 --- a/hw/nvram/fw_cfg.c +++ b/hw/nvram/fw_cfg.c @@ -250,7 +250,9 @@ static void fw_cfg_reboot(FWCfgState *s) } } - fw_cfg_add_file(s, "etc/boot-fail-wait", g_memdup(&rt_val, 4), 4); + s->reboot_timeout = rt_val; + fw_cfg_add_file(s, "etc/boot-fail-wait", + &s->reboot_timeout, sizeof(s->reboot_timeout)); } static void fw_cfg_write(FWCfgState *s, uint8_t value) diff --git a/include/hw/nvram/fw_cfg.h b/include/hw/nvram/fw_cfg.h index 828ad9dedc..99f6fafcaa 100644 --- a/include/hw/nvram/fw_cfg.h +++ b/include/hw/nvram/fw_cfg.h @@ -53,6 +53,8 @@ struct FWCfgState { dma_addr_t dma_addr; AddressSpace *dma_as; MemoryRegion dma_iomem; + + uint32_t reboot_timeout; }; struct FWCfgIoState {