diff options
author | Tim Deegan <tim@xen.org> | 2012-03-08 16:40:05 +0000 |
---|---|---|
committer | Tim Deegan <tim@xen.org> | 2012-03-08 16:40:05 +0000 |
commit | 90b6e6c88983250742e1356d7178a6d4e683fa80 (patch) | |
tree | cb07b08d3dbb9490f0a865780789cb887dd61c51 /tools/xenpaging/xenpaging.c | |
parent | dac9bb57eca774e5ab6189c5ff71b38cd5aec701 (diff) | |
download | xen-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/xenpaging.c')
-rw-r--r-- | tools/xenpaging/xenpaging.c | 5 |
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 ) { |