xen: Don't try to call xen_alloc_p2m_entry() on autotranslating guests
authorBoris Ostrovsky <boris.ostrovsky@oracle.com>
Wed, 23 Aug 2017 22:27:04 +0000 (18:27 -0400)
committerBoris Ostrovsky <boris.ostrovsky@oracle.com>
Thu, 31 Aug 2017 13:45:55 +0000 (09:45 -0400)
Commit aba831a69632 ("xen: remove tests for pvh mode in pure pv paths")
removed XENFEAT_auto_translated_physmap test in xen_alloc_p2m_entry()
since it is assumed that the routine is never called by non-PV guests.

However, alloc_xenballooned_pages() may make this call on a PVH guest.
Prevent this from happening by adding XENFEAT_auto_translated_physmap
check there.

Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
Fixes: aba831a69632 ("xen: remove tests for pvh mode in pure pv paths")

drivers/xen/balloon.c

index ab609255a0f35f02aaa401ecb0be925a2b4b5ba9..f77e499afdddb02c2d7595459a70b15f3a8c56d5 100644 (file)
@@ -664,9 +664,11 @@ int alloc_xenballooned_pages(int nr_pages, struct page **pages)
                         */
                        BUILD_BUG_ON(XEN_PAGE_SIZE != PAGE_SIZE);
 
-                       ret = xen_alloc_p2m_entry(page_to_pfn(page));
-                       if (ret < 0)
-                               goto out_undo;
+                       if (!xen_feature(XENFEAT_auto_translated_physmap)) {
+                               ret = xen_alloc_p2m_entry(page_to_pfn(page));
+                               if (ret < 0)
+                                       goto out_undo;
+                       }
 #endif
                } else {
                        ret = add_ballooned_pages(nr_pages - pgno);