Then, you can remove the parameter from kvm_slots_grow() completely and just
call it
kvm_slots_double() and simplify a bit:
static bool kvm_slots_double(KVMMemoryListener *kml)
{
unsigned int i, nr_slots_new, cur = kml->nr_slots_allocated;
KVMSlot *slots;
nr_slots_new = MIN(cur * 2, kvm_state->nr_slots_max);
if (nr_slots_new == kvm_state->nr_slots_max) {
/* We reached the maximum */
return false;
}
assert(kml->slots);
slots = g_renew(KVMSlot, kml->slots, nr_slots_new);
/*
* g_renew() doesn't initialize extended buffers, however kvm
* memslots require fields to be zero-initialized. E.g. pointers,
* memory_size field, etc.
*/
memset(&slots[cur], 0x0, sizeof(slots[0]) * (nr_slots_new - cur));
for (i = cur; i < nr_slots_new; i++) {
slots[i].slot = i;
}
kml->slots = slots;
kml->nr_slots_allocated = nr_slots_new;
trace_kvm_slots_grow(cur, nr_slots_new);
return true;
}