From mboxrd@z Thu Jan 1 00:00:00 1970 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=-6.5 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS 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 43A91C432C3 for ; Sat, 30 Nov 2019 19:54:11 +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 1211020732 for ; Sat, 30 Nov 2019 19:54:11 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="i8x+bWHk" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1211020732 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:37746 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ib8ok-00032x-4A for qemu-devel@archiver.kernel.org; Sat, 30 Nov 2019 14:54:10 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:53527) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ib8ds-0006Tg-Qh for qemu-devel@nongnu.org; Sat, 30 Nov 2019 14:43:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ib8dq-000593-Rj for qemu-devel@nongnu.org; Sat, 30 Nov 2019 14:42:56 -0500 Received: from us-smtp-1.mimecast.com ([207.211.31.81]:44727 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1ib8do-00055U-RT for qemu-devel@nongnu.org; Sat, 30 Nov 2019 14:42:54 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1575142972; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Ui6GrgoIca+XbfoMtNNhuIbZOCAX//qMjn54wOZVwE0=; b=i8x+bWHk/bEay8rChZ+/Wcnz78mjLGl55F1Cl9DigIi/wcVZfLbFVuynjUexWw4GSqd09p dbbvOSNbh/oDseodB24HxVamc4sFO/UtPWNBZOyXciLnsJFwn7TTINE+bvELuMFkwm3VLs MV4gyUO76PQU0QfoVx9luLhCh61+UnU= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-263-rIGtdbenONej9jLdE2_7DA-1; Sat, 30 Nov 2019 14:42:48 -0500 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id B9A63107ACC4; Sat, 30 Nov 2019 19:42:47 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-116-134.ams2.redhat.com [10.36.116.134]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 8ABFA5C219; Sat, 30 Nov 2019 19:42:47 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 1FDE611366E6; Sat, 30 Nov 2019 20:42:41 +0100 (CET) From: Markus Armbruster To: qemu-devel@nongnu.org Subject: [PATCH 08/21] exec: Fix latent file_ram_alloc() error handling bug Date: Sat, 30 Nov 2019 20:42:27 +0100 Message-Id: <20191130194240.10517-9-armbru@redhat.com> In-Reply-To: <20191130194240.10517-1-armbru@redhat.com> References: <20191130194240.10517-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-MC-Unique: rIGtdbenONej9jLdE2_7DA-1 X-Mimecast-Spam-Score: 0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 207.211.31.81 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: Igor Mammedov , vsementsov@virtuozzo.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" When os_mem_prealloc() fails, file_ram_alloc() calls qemu_ram_munmap() and returns null. Except it doesn't when its @errp argument is null, because it checks for failure with (errp && *errp). Messed up in commit 056b68af77 "fix qemu exit on memory hotplug when allocation fails at prealloc time". The bug can't bite as no caller actually passes null. Fix it anyway. Cc: Igor Mammedov Signed-off-by: Markus Armbruster --- exec.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/exec.c b/exec.c index ffdb518535..45695a5f2d 100644 --- a/exec.c +++ b/exec.c @@ -1841,6 +1841,7 @@ static void *file_ram_alloc(RAMBlock *block, bool truncate, Error **errp) { + Error *err =3D NULL; MachineState *ms =3D MACHINE(qdev_get_machine()); void *area; =20 @@ -1898,8 +1899,9 @@ static void *file_ram_alloc(RAMBlock *block, } =20 if (mem_prealloc) { - os_mem_prealloc(fd, area, memory, ms->smp.cpus, errp); - if (errp && *errp) { + os_mem_prealloc(fd, area, memory, ms->smp.cpus, &err); + if (err) { + error_propagate(errp, err); qemu_ram_munmap(fd, area, memory); return NULL; } --=20 2.21.0