Skip to content

Commit dbaff30

Browse files
committed
kvm: warn on more invariant breakage
Modifying a non-existent slot is not allowed. Also check that the first loop doesn't move a deleted slot beyond the used part of the mslots array. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
1 parent efbeec7 commit dbaff30

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

virt/kvm/kvm_main.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -671,6 +671,7 @@ static void update_memslots(struct kvm_memslots *slots,
671671

672672
WARN_ON(mslots[i].id != id);
673673
if (!new->npages) {
674+
WARN_ON(!mslots[i].npages);
674675
new->base_gfn = 0;
675676
if (mslots[i].npages)
676677
slots->used_slots--;
@@ -704,7 +705,8 @@ static void update_memslots(struct kvm_memslots *slots,
704705
slots->id_to_index[mslots[i].id] = i;
705706
i--;
706707
}
707-
}
708+
} else
709+
WARN_ON_ONCE(i != slots->used_slots);
708710

709711
mslots[i] = *new;
710712
slots->id_to_index[mslots[i].id] = i;

0 commit comments

Comments
 (0)