On 12/20/23 08:34, Christian Borntraeger wrote:
Right now it is possible to see gmap->private being zero in kvm_s390_vsie_gmap_notifier resulting in a crash. This is due to the fact that we add gmap->private == kvm after creation: static int acquire_gmap_shadow(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page) { [...] gmap = gmap_shadow(vcpu->arch.gmap, asce, edat); if (IS_ERR(gmap)) return PTR_ERR(gmap); gmap->private = vcpu->kvm; Instead of tracking kvm in the shadow gmap, simply use the parent one. Cc: David Hildenbrand <david@xxxxxxxxxx> Signed-off-by: Christian Borntraeger <borntraeger@xxxxxxxxxxxxx>
I'm not completely happy with fixing this in the notifier by accessing the parent although I do understand, that we want to have a fix that's easily backportable.
From what I see "private" is currently not guarded by gmap->initialized but maybe we should do that. This of course might bring a bit more pain when backporting.
The other option is to retry which might burn a few cycles.