[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] x86/p2m: fix xenmem_add_to_physmap_one double page removal


  • To: <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Roger Pau Monne <roger.pau@xxxxxxxxxx>
  • Date: Tue, 14 Sep 2021 15:34:19 +0200
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=EgUxGtlAMtrN3bVygrNwcyHj5WdASjCPNTGzebnP1Rs=; b=daDBGq2XJrnx2dkFXFamnQJjPFbH5Tu7X0vN7+Sk2xqUcSqqSdPNClKK+xMDFxh0XywyjtipvND6qPdHsybeQn4xi0HnFrZL1fkmFYE84v5hc3+5NuYVZRmcwRsJx5ZXhJqPZMaE3aa0ahjjor0Qh14rv2kavIkghM8JR2ZmE6RfSZHtmG75EUKMKfjGzjmZfTlkVx+ov84dJPpR9nxVKxAhvr49giDF4S5vXmovIQB/lOhZPF3R21HiH2bosYR1+3V2hLemTwfdLLbnhwiWcOFFvPGyBWAqbGEDqPTpScZx7DXgPPKLlxGtuxp982Smq85d3vGBbnQLO1oCk4K/0g==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jFMCRB1kOh7dLOBtL31Nh+L8vojJ/48uwhdSfjfCaCyyu8pQWVE++L/4GC8ojEoNLrAq1I76djgKfFjAGHHOGj8GVS5NXpRKFogif1gZcKjghRoHSa0Jhze+lc9TZm+Qh1fZay9sC02PM59g66sAPJLi/tMleLsMEX8eAfPB9VvMhoBqBLWnbmb/cTe60QbYKdpo6zqf36bFbe/PR7zEpMbO9bxx99y1z3mv4IDe2JFs84hOeIJP/M7vh0rPDNQnu92iRFBc7vDRkMc5yDpeSjRkr6gGBK6pYzNdSAC871bzZE2kMj0h44/fHrQE92sEV1jdzSOETRbZN3cNP407mg==
  • Authentication-results: esa2.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com
  • Cc: Roger Pau Monne <roger.pau@xxxxxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, George Dunlap <george.dunlap@xxxxxxxxxx>, Wei Liu <wl@xxxxxxx>
  • Delivery-date: Tue, 14 Sep 2021 13:35:01 +0000
  • Ironport-data: A9a23:mUsWoa0T+6k6RZTvJfbD5e12kn2cJEfYwER7XKvMYLTBsI5bp2ZWn GdNDGyGPayDZDCneYgkbY2xoRsEv8WByt4wSAI5pC1hF35El5HIVI+TRqvS04J+DSFhoGZPt Zh2hgzodZhsJpPkS5PE3oHJ9RGQ74nRLlbHILOCan0ZqTNMEn970EoywrJh2+aEvPDia++zk YKqyyHgEAfNNw5cagr4PIra9XuDFNyr0N8plgRWicJj5TcypFFMZH4rHomjLmOQf2VhNrXSq 9Avbl2O1jixEx8FUrtJm1tgG6EAaua60QOm0hK6V0U+6/TrS+NbPqsTbZIhhUlrZzqhhtlBx vVU6qaJTyQ3HaHOmugHaiZ5OnQrVUFG0OevzXmXtMWSywvNcmf2wuUoB0YzVWEa0r8pWycUr 6VecW1TKEDY7w616OvTpu1EnMMsIdOtJIoCknph0SvYHbAtRpWrr6DiuIUGgmdr3Zsm8fD2R vFIVyFMfgz8bz5ePxQWKK8lk8z4ryyqG9FfgA3M/vdmi4TJ9yRu1JD9PdyTfcaFLe1XlEuFo mPN/0ziHwoXcteYzFKt4n+qw+PCgy7/cIYTD6GjsO5nhkWJwW4eAwFQUkG0ycRVkWbnBYgZc RZNvHNz8+5iryRHU+URQTWhqU6KngdDYeNWMPMZ5AOPxrDt3CewUz1soiF6VDA2iCMnbWV0j QbUzoy2W2UHXK69Ei3Gp+zNxd+mEW1MdzZTO3VcJecQy4S7+OkOYgTzosGP+UJfpub8Hy35i xuOpTI371n4pZ9Wj/jnlbwrbjTFm3QocuLXzl6MNo5GxlkgDGJAW2BOwQKFhRqnBNzFJmRtR FBex6CjABkmVPlhbhBhpdnh+pnztp5p1xWH2jZS82QJrWzxqxZPg6gJuGwWyLhV3jYsJmayP R67VfJ5z55PJnq6BZKbkKroUJ9C8EQULvy8Dqq8RoMXOvBZLVbblAkzNR/49z28yyAEzPBgU ap3hO7xVB72/4w8l2HoLwrcuJd2rh0DKZT7HsyilEX7juPFPRZ4i94taTOzUwzw14vdyC39+ NdDLcqajRJZVez1eC7M9oAPa1sNKBAG6Vre9aS7r8aPfVhrHn8PEfjUze9zcoBphf0NxOzJ4 mu8SglTz1+m3S/LLgCDa3ZCbrLzXMkg8SJnbHJ0ZVv4iWI+ZYuP7bsEc8dld7cQ6+E+n+V/S OMIepvcD60XGCjH4TkUcbL0sJdmKEawnQuLMif8OGo/cpdsShbn4NjhegezpiACAjDu7Zk1o qG61xOdSp0GHlwwAMHTYfOp7lWwoXlCx74iAxqWeoFeIRy+/pJrJir9iu4MD/sNcRiTlCGH0 wu2AAsDobWfqYEC79SU17uPqJ2kErUiExMCTXXb97u/KQLT4nGnnd1bSO+NcD3QCDH09aGla bkHxv3wKqRazlNDso46GLd316MuodDoouYCnAhjGXzKaXWtC69hfSbajZUe6PUVy+8LoxayV 2KO5sJeaOeAN87SGVIMIBYoM7aY3vYOlziOtfk4LS0WPsOsEGZrhamKAySxtQ==
  • Ironport-hdrordr: A9a23:lWtUdaw9XVadDQp8yAwdKrPxyeskLtp133Aq2lEZdPULSKOlfp GV8MjziyWYtN9wYhAdcdDpAtjlfZq6z+8O3WBxB8bYYOCCggWVxe5ZnO3fKlHbak/DH41mpN hdmspFeaTN5DFB5K6QimnIcKdf/DDuytHVuQ609QYLcegFUdAE0+8vYTzrb3GeCTM2TqYRJd 653I5qtjCgcXMYYoCSAWQEZfHKo5numIj9aRALKhY74E3W5AnYpYLSIly95FMzQjlPybAt/S zslBH43Lyqt7WexgXH32HewpxKkJ/Ky8dFBuaLls8JQw+cwDqAVcBEYfmvrTo1qOag5BIDl8 TNmQ4pO4BJ53bYbgiO0G3Q8jil9Axrx27pyFeej3emi9f+XigGB81Igp8cWgfF6mI71esMnp 5j7ia8jd56HBnAlCPy65zjTBdxjHe5pnIkjKo6k2Ffa40Dc7VcxLZvs3+9KK1wXB4S1bpXU9 WHVKrnlbRrmBKhHjzkV1BUsZ2Rti9ZJGbCfqAA0vblpAS+0koJi3fxaaQk7wU9HakGOul5Dt L/Q9BVfYF1P74rhJ1GdZQ8qLOMexTwqDL3QSuvyAfcZek600ykke+D3Fxy3pDsRKA1
  • Ironport-sdr: 1OfiyB8GONqkJmMwpEGY+dk+vgcH+h4eAV0YqFH4dqJLFwFmQCP6DZ1veTQ0b63r1uHR4K8IbM gEE9saq58E3IMhheYd/SND9NKoZxoLDh9/JMTOxbTC/O+Zj3lVDE18xgrVAjLAyYhY+bXMCX+l dFreqe/E5GXc1OU/Of+eJCokVGrheh/1uyrywE7qlJvttdC7gvYKZ/IiJo/OtkenI9fYog1eNi UM45HDSMS2gU6Tae1fzjvt9VGMUXoKS3z2GL/p+oIcqrzHhwZz0iwFA9oOFISwPrYoVY/QzOnJ W1Gpy4EVZq9CboJgBK4wS7j6
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

If the new gfn matches the previous one (ie: gfn == old_gpfn)
xenmem_add_to_physmap_one will issue a duplicated call to
guest_physmap_remove_page with the same gfn, because the
get_gpfn_from_mfn call has been moved by commit f8582da041 to be
performed before the original page is removed. This leads to the
second guest_physmap_remove_page failing, which was not the case
before commit f8582da041.

Fix this by adding a check that prevents a second call to
guest_physmap_remove_page if the previous one has already removed the
backing page from that gfn.

Fixes: f8582da041 ('x86/mm: pull a sanity check earlier in 
xenmem_add_to_physmap_one()')
Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
---
 xen/arch/x86/mm/p2m.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/x86/mm/p2m.c b/xen/arch/x86/mm/p2m.c
index 674a6f4fe9..2bd4d37286 100644
--- a/xen/arch/x86/mm/p2m.c
+++ b/xen/arch/x86/mm/p2m.c
@@ -2813,7 +2813,7 @@ int xenmem_add_to_physmap_one(
     }
 
     /* Unmap from old location, if any. */
-    if ( !rc && old_gpfn != INVALID_M2P_ENTRY )
+    if ( !rc && old_gpfn != INVALID_M2P_ENTRY && !gfn_eq(_gfn(old_gpfn), gpfn) 
)
         rc = guest_physmap_remove_page(d, _gfn(old_gpfn), mfn, PAGE_ORDER_4K);
 
     /* Map at new location. */
-- 
2.33.0




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.