xenpaging: Fix-up xenpaging tool code. This isn't directly related to EPT checking, but does some general fix-ups to the xenpaging code (adds some extra frees, etc.) Signed-off-by: Patrick Colp diff -r fb0b9af3ed2c tools/xenpaging/xenpaging.c --- a/tools/xenpaging/xenpaging.c Tue Jul 27 17:04:24 2010 -0400 +++ b/tools/xenpaging/xenpaging.c Tue Jul 27 17:04:30 2010 -0400 @@ -73,8 +73,9 @@ xc_interface *xch; int rc; - xch = xc_interface_open(0,0,0); - if ( !xch ) return NULL; + xch = xc_interface_open(NULL, NULL, 0); + if ( !xch ) + goto err_iface; DPRINTF("xenpaging init\n"); *xch_r = xch; @@ -101,7 +102,7 @@ paging->mem_event.ring_page = init_page(); if ( paging->mem_event.ring_page == NULL ) { - ERROR("Error initialising shared page"); + ERROR("Error initialising ring page"); goto err; } @@ -199,13 +200,27 @@ return paging; err: - if ( paging->bitmap ) - free(paging->bitmap); - if ( paging->platform_info ) - free(paging->platform_info); if ( paging ) + { + if ( paging->mem_event.shared_page ) + { + munlock(paging->mem_event.shared_page, PAGE_SIZE); + free(paging->mem_event.shared_page); + } + + if ( paging->mem_event.ring_page ) + { + munlock(paging->mem_event.ring_page, PAGE_SIZE); + free(paging->mem_event.ring_page); + } + + free(paging->bitmap); + free(paging->platform_info); + free(paging->domain_info); free(paging); + } + err_iface: return NULL; } @@ -619,6 +640,8 @@ if ( rc == 0 ) rc = rc1; + xc_interface_close(xch); + return rc; }