On Tue, Dec 17, 2019 at 12:40:38PM -0800, Sean Christopherson wrote:
> +int kvm_get_dirty_log(struct kvm *kvm, struct kvm_dirty_log *log,
> +                   int *is_dirty, struct kvm_memory_slot **memslot)
>  {
>       struct kvm_memslots *slots;
> -     struct kvm_memory_slot *memslot;
>       int i, as_id, id;
>       unsigned long n;
>       unsigned long any = 0;
>  
> +     *memslot = NULL;
> +     *is_dirty = 0;
> +
>       as_id = log->slot >> 16;
>       id = (u16)log->slot;
>       if (as_id >= KVM_ADDRESS_SPACE_NUM || id >= KVM_USER_MEM_SLOTS)
>               return -EINVAL;
>  
>       slots = __kvm_memslots(kvm, as_id);
> -     memslot = id_to_memslot(slots, id);
> -     if (!memslot->dirty_bitmap)
> +     *memslot = id_to_memslot(slots, id);
> +     if (!(*memslot)->dirty_bitmap)
>               return -ENOENT;
>  
> -     n = kvm_dirty_bitmap_bytes(memslot);
> +     kvm_arch_sync_dirty_log(kvm, *memslot);

Should this line belong to previous patch?

> +
> +     n = kvm_dirty_bitmap_bytes(*memslot);
>  
>       for (i = 0; !any && i < n/sizeof(long); ++i)
> -             any = memslot->dirty_bitmap[i];
> +             any = (*memslot)->dirty_bitmap[i];
>  
> -     if (copy_to_user(log->dirty_bitmap, memslot->dirty_bitmap, n))
> +     if (copy_to_user(log->dirty_bitmap, (*memslot)->dirty_bitmap, n))
>               return -EFAULT;
>  
>       if (any)
> -- 
> 2.24.1

-- 
Peter Xu

_______________________________________________
kvmarm mailing list
[email protected]
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm

Reply via email to