From nobody Thu Nov 13 21:50:35 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1582798434; cv=none; d=zohomail.com; s=zohoarc; b=XpPLuuaKIgHAu5qljFJQ7dXk7dnsqfyNC/aUhnXDimuAJJPqDK4rGMNxhdgl2ho1OQmRny6GhB4P8D5g8EsM7dscAIwQrsZy3IEdOAGOsAYyCdPcl0T8ubWON8IZOWNjpmKj/FZ+XQHNLVGH/vUNgXVAthFetCF2f/RePObRSTs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1582798434; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=zwsZQQ5MN8MY5ICY0EQq4aovYGXTGBvqIvi5JLhszK0=; b=CdhOg8XXhlRzlzEYce2/bEL/R2f6DP3V8gLEWDQKyvaAnIMBbh4RkmeMGeT9fRqD6V27qGBkIf6Am3qFejrLc7X0N2B4d/NOHCo5ta2VC4+YrPnJBOllPruEaXsd1DDoRcv1I5/WRYhzEAnW3EV0zdk9kwvmPU67nCG91BadmwE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1582798434050591.8615706557982; Thu, 27 Feb 2020 02:13:54 -0800 (PST) Received: from localhost ([::1]:56550 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j7GAy-0002dV-BS for importer@patchew.org; Thu, 27 Feb 2020 05:13:52 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:39292) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j7GA2-0001ak-Hk for qemu-devel@nongnu.org; Thu, 27 Feb 2020 05:12:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j7GA1-0003Cs-4r for qemu-devel@nongnu.org; Thu, 27 Feb 2020 05:12:54 -0500 Received: from us-smtp-1.mimecast.com ([207.211.31.81]:55453 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 1j7GA1-0003CW-1N for qemu-devel@nongnu.org; Thu, 27 Feb 2020 05:12:53 -0500 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-43-AmvJFN6nO82AeiyMb6tKRw-1; Thu, 27 Feb 2020 05:12:51 -0500 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 9B1D1801E6C; Thu, 27 Feb 2020 10:12:49 +0000 (UTC) Received: from t480s.redhat.com (ovpn-116-36.ams2.redhat.com [10.36.116.36]) by smtp.corp.redhat.com (Postfix) with ESMTP id 4C59E6E3EE; Thu, 27 Feb 2020 10:12:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1582798372; 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=zwsZQQ5MN8MY5ICY0EQq4aovYGXTGBvqIvi5JLhszK0=; b=hAP5NQjVQae3NT6q1YOUkw62LtcM5jJg5t6chl/adsdhvX4nedkAyrhdibpAGT7N79Hkdl Dn8B9AacE7ns7wgJlgBSfOR6kKzwFfrtVS67cwMKOF0G+rKxarcRX688jungEKwP+3pLlw VJ3cDoGcm4KB3PpfjNX95wG4Wm8L3LQ= X-MC-Unique: AmvJFN6nO82AeiyMb6tKRw-1 From: David Hildenbrand To: qemu-devel@nongnu.org Subject: [PATCH v3 01/15] util: vfio-helpers: Fix qemu_vfio_close() Date: Thu, 27 Feb 2020 11:11:51 +0100 Message-Id: <20200227101205.5616-2-david@redhat.com> In-Reply-To: <20200227101205.5616-1-david@redhat.com> References: <20200227101205.5616-1-david@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com 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: Eduardo Habkost , "Michael S . Tsirkin" , Igor Kotrasinski , David Hildenbrand , "Dr . David Alan Gilbert" , Peter Xu , Alex Williamson , Murilo Opsfelder Araujo , Igor Mammedov , Paolo Bonzini , Stefan Hajnoczi , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" qemu_vfio_undo_mapping() will decrement the number of mappings and reshuffle the array elements to fit into the reduced size. Iterating over all elements like this does not work as expected, let's make sure to remove all mappings properly. Reviewed-by: Peter Xu Cc: Richard Henderson Cc: Paolo Bonzini Cc: Eduardo Habkost Cc: Marcel Apfelbaum Cc: Alex Williamson Cc: Stefan Hajnoczi Signed-off-by: David Hildenbrand --- util/vfio-helpers.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/util/vfio-helpers.c b/util/vfio-helpers.c index 9ec01bfe26..f31aa77ffe 100644 --- a/util/vfio-helpers.c +++ b/util/vfio-helpers.c @@ -695,13 +695,11 @@ static void qemu_vfio_reset(QEMUVFIOState *s) /* Close and free the VFIO resources. */ void qemu_vfio_close(QEMUVFIOState *s) { - int i; - if (!s) { return; } - for (i =3D 0; i < s->nr_mappings; ++i) { - qemu_vfio_undo_mapping(s, &s->mappings[i], NULL); + while (s->nr_mappings) { + qemu_vfio_undo_mapping(s, &s->mappings[s->nr_mappings - 1], NULL); } ram_block_notifier_remove(&s->ram_notifier); qemu_vfio_reset(s); --=20 2.24.1