On Tue, 19 Mar 2019 15:47:05 +0100 Pierre Morel <pmorel@xxxxxxxxxxxxx> wrote: > >>>>> if (matrix_mdev->kvm) > >>>>> kvm_arch_crypto_clear_masks(matrix_mdev->kvm); > >>>> > >>>> This still conditional? > >>> > >>> Yes, nothing to clear if there is no KVM. > >>> > >> > >> Since we have ensured the open only works if there is a KVM at that > >> point in time, and we have taken a reference to KVM, I would expect > >> KVM can not go away before we give up our reference. > > > > Right. > > Right but based on the assumption we do a kvm_get_kvm() during open. > > But now we will do it inside the notifier, so the logic is to do a > kvm_put_kvm in the notifier too. > This is important because userland will ask us to release the KVM/VFIO > link through this notifier. > So I will have to rework this part where KVM==NULL in the notifier too. > > Regards, > Pierre I think it can be done both ways. If you ensure KVM != NULL if the open succeeds and take the reference in the notifier. I suppose if open() fails release() won't be called. But the logic/code in open() would get quite ugly because the callback could be called assync so that it overlaps with the rest of open(). Not failing open() in case of no KVM is there yet is in my opinion cleaner anyway. Regards, Halil