Re: There is a null-ptr-deref bug in kvm_dirty_ring_get in virt/kvm/dirty_ring.c

From: Paolo Bonzini
Date: Wed Nov 17 2021 - 11:49:29 EST


On 11/17/21 10:46, Woodhouse, David wrote:
The remaining
option would be just "do not mark the page as dirty if the ring buffer
is active". This is feasible because userspace itself has passed the
shared info gfn; but again, it's ugly...
I think I am coming to quite like that 'remaining option' as long as we
rephrase it as follows:

KVM does not mark the shared_info page as dirty, and userspace is
expected to*assume* that it is dirty at all times. It's used for
delivering event channel interrupts and the overhead of marking it
dirty each time is just pointless.

For the case of dirty-bitmap, one solution could be to only set a bool and actually mark the page dirty lazily, at the time of KVM_GET_DIRTY_LOG. For dirty-ring, I agree that it's easiest if userspace just "knows" the page is dirty.

Paolo