X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fdevices%2Fswapbypass_cache.c;h=2f6d75b90ec02ab0aa0bd13675abed1ae1bf7ddc;hb=e3b62e7befa086a4fb320890952f54667ee46329;hp=ec2bba8069afa18f7261c46237c410a3ca4dbe06;hpb=94f67717b6461df514dc225ed84f03b44c44061b;p=palacios.git diff --git a/palacios/src/devices/swapbypass_cache.c b/palacios/src/devices/swapbypass_cache.c index ec2bba8..2f6d75b 100644 --- a/palacios/src/devices/swapbypass_cache.c +++ b/palacios/src/devices/swapbypass_cache.c @@ -284,6 +284,11 @@ static int swap_init(struct v3_vm_info * vm, v3_cfg_tree_t * cfg) { swap = (struct swap_state *)V3_Malloc(sizeof(struct swap_state) + ((capacity / 4096) / 8)); + if (!swap) { + PrintError("Cannot allocate in init\n"); + return -1; + } + swap->vm = vm; swap->capacity = capacity; @@ -295,6 +300,13 @@ static int swap_init(struct v3_vm_info * vm, v3_cfg_tree_t * cfg) { swap->hdr = (union swap_header *)swap; swap->swap_base_addr = (addr_t)V3_AllocPages(swap->capacity / 4096); + + if (!swap->swap_base_addr) { + PrintError("Cannot allocate swap space\n"); + V3_Free(swap); + return -1; + } + swap->swap_space = (uint8_t *)V3_VAddr((void *)(swap->swap_base_addr)); memset(swap->swap_space, 0, swap->capacity);