aboutsummaryrefslogtreecommitdiffstats
path: root/tools/xenpaging
diff options
context:
space:
mode:
authorTim Deegan <tim@xen.org>2012-03-08 16:40:05 +0000
committerTim Deegan <tim@xen.org>2012-03-08 16:40:05 +0000
commit90b6e6c88983250742e1356d7178a6d4e683fa80 (patch)
treecb07b08d3dbb9490f0a865780789cb887dd61c51 /tools/xenpaging
parentdac9bb57eca774e5ab6189c5ff71b38cd5aec701 (diff)
downloadxen-90b6e6c88983250742e1356d7178a6d4e683fa80.tar.gz
xen-90b6e6c88983250742e1356d7178a6d4e683fa80.tar.bz2
xen-90b6e6c88983250742e1356d7178a6d4e683fa80.zip
Tools: After a helper maps a ring, yank it from the guest physmap
This limits the ability of the guest to play around with its own rings, and DoS itself. Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla.org> Acked-by: Ian Campbell <ian.campbell@citrix.com> Committed-by: Tim Deegan <tim@xen.org>
Diffstat (limited to 'tools/xenpaging')
-rw-r--r--tools/xenpaging/xenpaging.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/tools/xenpaging/xenpaging.c b/tools/xenpaging/xenpaging.c
index b9ba00fa11..5c1cd81ecc 100644
--- a/tools/xenpaging/xenpaging.c
+++ b/tools/xenpaging/xenpaging.c
@@ -416,6 +416,11 @@ static struct xenpaging *xenpaging_init(int argc, char *argv[])
(mem_event_sring_t *)paging->mem_event.ring_page,
PAGE_SIZE);
+ /* Now that the ring is set, remove it from the guest's physmap */
+ if ( xc_domain_decrease_reservation_exact(xch,
+ paging->mem_event.domain_id, 1, 0, &ring_pfn) )
+ PERROR("Failed to remove ring from guest physmap");
+
/* Get max_pages from guest if not provided via cmdline */
if ( !paging->max_pages )
{