KVM: Fix kvm_clear_dirty_log_protect off-by-(minus-)one
Just imaging the case where num_pages < BITS_PER_LONG, then the loop
will be skipped while it shouldn't.
Signed-off-by: Peter Xu <peterx@redhat.com>
Fixes: 2a31b9db15
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
4ddc920457
commit
53eac7a8f8
|
@ -1264,8 +1264,8 @@ int kvm_clear_dirty_log_protect(struct kvm *kvm,
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
|
|
||||||
spin_lock(&kvm->mmu_lock);
|
spin_lock(&kvm->mmu_lock);
|
||||||
for (offset = log->first_page,
|
for (offset = log->first_page, i = offset / BITS_PER_LONG,
|
||||||
i = offset / BITS_PER_LONG, n = log->num_pages / BITS_PER_LONG; n--;
|
n = DIV_ROUND_UP(log->num_pages, BITS_PER_LONG); n--;
|
||||||
i++, offset += BITS_PER_LONG) {
|
i++, offset += BITS_PER_LONG) {
|
||||||
unsigned long mask = *dirty_bitmap_buffer++;
|
unsigned long mask = *dirty_bitmap_buffer++;
|
||||||
atomic_long_t *p = (atomic_long_t *) &dirty_bitmap[i];
|
atomic_long_t *p = (atomic_long_t *) &dirty_bitmap[i];
|
||||||
|
|
Loading…
Reference in New Issue