static void *state_kcalloc(struct a6xx_gpu_state *a6xx_state, int nr, size_t objsize)
 {
        struct a6xx_state_memobj *obj =
-               kzalloc((nr * objsize) + sizeof(*obj), GFP_KERNEL);
+               kvzalloc((nr * objsize) + sizeof(*obj), GFP_KERNEL);
 
        if (!obj)
                return NULL;
 
        snapshot->iova = bo->iova;
        snapshot->size = bo->size;
-       snapshot->data = kvzalloc(snapshot->size, GFP_KERNEL);
+       snapshot->data = state_kcalloc(a6xx_state, 1, snapshot->size);
        if (!snapshot->data)
                return NULL;
 
        struct a6xx_gpu_state *a6xx_state = container_of(state,
                        struct a6xx_gpu_state, base);
 
-       if (a6xx_state->gmu_log)
-               kvfree(a6xx_state->gmu_log->data);
-
-       if (a6xx_state->gmu_hfi)
-               kvfree(a6xx_state->gmu_hfi->data);
-
        list_for_each_entry_safe(obj, tmp, &a6xx_state->objs, node)
-               kfree(obj);
+               kvfree(obj);
 
        adreno_gpu_state_destroy(state);
        kfree(a6xx_state);