From nobody Thu Apr 25 22:29:10 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=1557836572; cv=none; d=zoho.com; s=zohoarc; b=UH9Y3RJVBxoOwivLzpD0xqZcF9qC49I9YT1R8fCLx0fM+L3K3FQH0hNcZlHhrQugPUYFXU39kB3AduAe0T/2hk6PeAGo9B0hQmccJLCg+63OEpCQaoSsQWsH6E4ty5bYk4ps+mZ++pyK9XaB7DhIhJRtZOR08VlZ2cXNf56KSGo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1557836572; 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=XPcegR3JlE/wcU5cUhZ/2E95D4rZgw9ExeaIRSdm3WI3b1NEitafUtfpm6V4XjGQOwaq1cfaNucSy+aiNlNN3GgND0fHYKZKjo/+WeX+vvfe4o+INp3qofjghJlTsUp4AQzhlAR4ey8adT7f6i3lMV48D3wM6xM3thJ/oeXutog= 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 1557836572516536.36818896269; Tue, 14 May 2019 05:22:52 -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 1hQWRe-0008UK-4Y; Tue, 14 May 2019 12:22:10 +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 1hQWRc-0008ST-Ug for xen-devel@lists.xenproject.org; Tue, 14 May 2019 12:22:08 +0000 Received: from foss.arm.com (unknown [217.140.101.70]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTP id e3e6a51e-7642-11e9-8509-abde66b4cdf3; Tue, 14 May 2019 12:22:07 +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 45F65341; Tue, 14 May 2019 05:22:07 -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 12BFF3F71E; Tue, 14 May 2019 05:22:05 -0700 (PDT) X-Inumbo-ID: e3e6a51e-7642-11e9-8509-abde66b4cdf3 From: Julien Grall To: xen-devel@lists.xenproject.org Date: Tue, 14 May 2019 13:21:25 +0100 Message-Id: <20190514122136.28215-17-julien.grall@arm.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20190514122136.28215-1-julien.grall@arm.com> References: <20190514122136.28215-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