Re: [PATCH] KVM: const-ify all relevant uses of struct kvm_memory_slot
From: Peter Xu <peterx@redhat.com>
Date: 2021-07-30 20:19:30
Also in:
lkml
Hi, Hamza, On Mon, Jul 12, 2021 at 10:33:38PM -0400, Hamza Mahfooz wrote:
quoted hunk ↗ jump to hunk
@@ -1467,16 +1467,20 @@ rmap_walk_init_level(struct slot_rmap_walk_iterator *iterator, int level) static void slot_rmap_walk_init(struct slot_rmap_walk_iterator *iterator, - struct kvm_memory_slot *slot, int start_level, + const struct kvm_memory_slot *slot, int start_level, int end_level, gfn_t start_gfn, gfn_t end_gfn) { - iterator->slot = slot; - iterator->start_level = start_level; - iterator->end_level = end_level; - iterator->start_gfn = start_gfn; - iterator->end_gfn = end_gfn; + struct slot_rmap_walk_iterator iter = { + .slot = slot, + .start_gfn = start_gfn, + .end_gfn = end_gfn, + .start_level = start_level, + .end_level = end_level, + }; + + rmap_walk_init_level(&iter, iterator->start_level);
Here it should be s/iterator->//.
- rmap_walk_init_level(iterator, iterator->start_level); + memcpy(iterator, &iter, sizeof(struct slot_rmap_walk_iterator)); }
This patch breaks kvm/queue with above issue. Constify of kvm_memory_slot pointer should have nothing to do with this so at least it should need a separate patch. At the meantime I also don't understand why memcpy() here, which seems to be even slower.. -- Peter Xu