if (rmap_list == NULL) {
rmap_list = V3_Malloc(sizeof(struct list_head));
+
+ if (!rmap_list) {
+ PrintError("Cannot allocate\n");
+ return -1;
+ }
+
INIT_LIST_HEAD(rmap_list);
v3_htable_insert(cache_state->reverse_map, gpa, (addr_t)rmap_list);
entry = V3_Malloc(sizeof(struct rmap_entry));
+ if (!entry) {
+ PrintError("Cannot allocate\n");
+ return -1;
+ }
+
entry->gva = gva;
entry->gpa = pg_data->tuple.gpa;
entry->pt_type = pg_data->tuple.pt_type;
static int link_shdw_pg(struct shdw_pg_data * child_pg, struct shdw_pg_data * parent_pg, addr_t gva) {
struct shdw_back_ptr * back_ptr = V3_Malloc(sizeof(struct shdw_back_ptr));
+
+ if (!back_ptr) {
+ PrintError("Cannot allocate\n");
+ return -1;
+ }
+
memset(back_ptr, 0, sizeof(struct shdw_back_ptr));
back_ptr->pg_data = parent_pg;
if (cache_state->pgs_in_cache < cache_state->max_cache_pgs) {
pg_data = V3_Malloc(sizeof(struct shdw_pg_data));
+ if (!pg_data) {
+ PrintError("Cannot allocate\n");
+ return NULL;
+ }
+
pg_data->hpa = (addr_t)V3_AllocPages(1);
+
+ if (!pg_data->hpa) {
+ PrintError("Cannot allocate page for shadow page table\n");
+ return NULL;
+ }
+
pg_data->hva = (void *)V3_VAddr((void *)pg_data->hpa);
} else if (cache_state->pgs_in_free_list) {
V3_Print("Shadow Page Cache initialization\n");
cache_state = V3_Malloc(sizeof(struct cache_vm_state));
+
+ if (!cache_state) {
+ PrintError("Cannot allocate\n");
+ return -1;
+ }
+
memset(cache_state, 0, sizeof(struct cache_vm_state));
cache_state->page_htable = v3_create_htable(0, cache_hash_fn, cache_eq_fn);