From nobody Wed Apr 24 19:10:27 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=1557332248; cv=none; d=zoho.com; s=zohoarc; b=GNx5c5qV4wG5zAerjEIBHdkYSX+MRsqSlMYvVf+FSGM+U70sLQ77Lh/YdS36LwjaIhvs+Fw2Cr7Vvo6+hcZrIJl1YR+50Va8lSskTK/O3ehrQx63rOHbuPJ8Hue/O9a3RzEXldgb8ZmX4mU1UUuoGjGudCIVI9XxhiT598+l5uw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1557332248; 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=h4qucULm9utmZfFmFq+FElQErh6gNmI8fsaX/GtbH94=; b=YdbQZlLOsdgDJ4K1MGxCQfqdW7caHCNCorqoLuyk5mYaepnK72OAnlnPghqD3Tf2UEfu5xM01N8Pn59F9pjICStxpT5lIfR/vZeQyEmDRkpxbZhYnsc/a0kMQ7QtWQ0qOeu83q3Vi2iLdnUmPHPvNRnYVh6Hx2FKdZRkPYxqOOU= 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 1557332248487793.4854008704154; Wed, 8 May 2019 09:17:28 -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 1hOPEz-0008JD-7F; Wed, 08 May 2019 16:16:21 +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 1hOPEy-0008IK-0W for xen-devel@lists.xenproject.org; Wed, 08 May 2019 16:16:20 +0000 Received: from foss.arm.com (unknown [217.140.101.70]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTP id 9cb39e44-71ac-11e9-b79a-5f8566900e7a; Wed, 08 May 2019 16:16:19 +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 A319E374; Wed, 8 May 2019 09:16:18 -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 6FE603F238; Wed, 8 May 2019 09:16:17 -0700 (PDT) X-Inumbo-ID: 9cb39e44-71ac-11e9-b79a-5f8566900e7a From: Julien Grall To: xen-devel@lists.xenproject.org Date: Wed, 8 May 2019 17:16:03 +0100 Message-Id: <20190508161603.21964-8-julien.grall@arm.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20190508161603.21964-1-julien.grall@arm.com> References: <20190508161603.21964-1-julien.grall@arm.com> Subject: [Xen-devel] [PATCH v2 7/7] 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 --- 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