From nobody Thu Mar 28 08:30:19 2024 Delivered-To: importer@patchew.org Received-SPF: none (zoho.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; spf=none (zoho.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org ARC-Seal: i=1; a=rsa-sha256; t=1557835989; cv=none; d=zoho.com; s=zohoarc; b=J6CC9mvwnL9wcL9tc0sxHePvozxBjfrILQxXuhDu1NtqX/Pkmfnm5cfin080G+d6QWWwzSmVpaEPq7Y9t2Z128/VtI/P297iBbz1/z3vHwDfgSNDMZZp/Z8qojOoG8AwJsJSR+w7iI3P7cPBvLUDwzpUFeAmbO+VdQosk7mA4Tw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1557835989; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=g3Z4pVaRU9xc9T/B8NCdJWDiIuJKE3zj4IDLXRCZPkI=; b=lRIl91DUmdUfjqXxspeRnQk9VhpxLV6sjhz0eOU6YxypBGqnOXDE4bl/WIZpxCyOLzL2NdLDVcBkc+DRYA9079Lcom6Tkg0mCAsrprFerLSqqr7z2kSN8As54KoWCrRfuUY7sFveXNJiYW/U/AYrxbFCV4CKJHA8+htE/q3pkXE= ARC-Authentication-Results: i=1; mx.zoho.com; spf=none (zoho.com: 192.237.175.120 is neither permitted nor denied by domain of lists.xenproject.org) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1557835989525727.8376621175264; Tue, 14 May 2019 05:13:09 -0700 (PDT) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hQWHh-0006N0-MM; Tue, 14 May 2019 12:11:53 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hQWHg-0006Lr-8Q for xen-devel@lists.xenproject.org; Tue, 14 May 2019 12:11:52 +0000 Received: from foss.arm.com (unknown [217.140.101.70]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTP id 74a179be-7641-11e9-99f4-1f59df7d2d55; Tue, 14 May 2019 12:11:51 +0000 (UTC) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 1B93415AD; Tue, 14 May 2019 05:11:51 -0700 (PDT) Received: from e108454-lin.cambridge.arm.com (e108454-lin.cambridge.arm.com [10.1.196.50]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id DC6B13F71E; Tue, 14 May 2019 05:11:49 -0700 (PDT) X-Inumbo-ID: 74a179be-7641-11e9-99f4-1f59df7d2d55 From: Julien Grall To: xen-devel@lists.xenproject.org Date: Tue, 14 May 2019 13:11:32 +0100 Message-Id: <20190514121132.26732-9-julien.grall@arm.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20190514121132.26732-1-julien.grall@arm.com> References: <20190514121132.26732-1-julien.grall@arm.com> Subject: [Xen-devel] [PATCH MM-PART1 v3 8/8] xen/arm: mm: Flush the TLBs even if a mapping failed in create_xen_entries X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Oleksandr_Tyshchenko@epam.com, Julien Grall , Stefano Stabellini , Andrii Anisov MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" At the moment, create_xen_entries will only flush the TLBs if the full range has successfully been updated. This may lead to leave unwanted entries in the TLBs if we fail to update some entries. Signed-off-by: Julien Grall Reviewed-by: Andrii Anisov Reviewed-by: Stefano Stabellini --- Changes in v2: - Add Andrii's reviewed-by - Add Stefano's reviewed-by --- xen/arch/arm/mm.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c index 8ee828d445..9d584e4cbf 100644 --- a/xen/arch/arm/mm.c +++ b/xen/arch/arm/mm.c @@ -984,7 +984,7 @@ static int create_xen_entries(enum xenmap_operation op, unsigned long nr_mfns, unsigned int flags) { - int rc; + int rc =3D 0; unsigned long addr =3D virt, addr_end =3D addr + nr_mfns * PAGE_SIZE; lpae_t pte, *entry; lpae_t *third =3D NULL; @@ -1013,7 +1013,8 @@ static int create_xen_entries(enum xenmap_operation o= p, { printk("%s: trying to replace an existing mapping addr= =3D%lx mfn=3D%"PRI_mfn"\n", __func__, addr, mfn_x(mfn)); - return -EINVAL; + rc =3D -EINVAL; + goto out; } if ( op =3D=3D RESERVE ) break; @@ -1030,7 +1031,8 @@ static int create_xen_entries(enum xenmap_operation o= p, { printk("%s: trying to %s a non-existing mapping addr= =3D%lx\n", __func__, op =3D=3D REMOVE ? "remove" : "modify= ", addr); - return -EINVAL; + rc =3D -EINVAL; + goto out; } if ( op =3D=3D REMOVE ) pte.bits =3D 0; @@ -1043,7 +1045,8 @@ static int create_xen_entries(enum xenmap_operation o= p, { printk("%s: Incorrect combination for addr=3D%lx\n= ", __func__, addr); - return -EINVAL; + rc =3D -EINVAL; + goto out; } } write_pte(entry, pte); @@ -1052,11 +1055,14 @@ static int create_xen_entries(enum xenmap_operation= op, BUG(); } } +out: + /* + * Flush the TLBs even in case of failure because we may have + * partially modified the PT. This will prevent any unexpected + * behavior afterwards. + */ flush_xen_tlb_range_va(virt, PAGE_SIZE * nr_mfns); =20 - rc =3D 0; - -out: return rc; } =20 --=20 2.11.0 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel