On Wed, May 05, 2021 at 07:44:55PM +0200, Christian Borntraeger wrote: > > > On 05.05.21 19:28, Tony Krowiak wrote: > > The mdev remove callback for the vfio_ap device driver bails out with > > -EBUSY if the mdev is in use by a KVM guest. The intended purpose was > > to prevent the mdev from being removed while in use; however, returning a > > non-zero rc does not prevent removal. This could result in a memory leak > > of the resources allocated when the mdev was created. In addition, the > > KVM guest will still have access to the AP devices assigned to the mdev > > even though the mdev no longer exists. > > > > To prevent this scenario, cleanup will be done - including unplugging the > > AP adapters, domains and control domains - regardless of whether the mdev > > is in use by a KVM guest or not. > [...] > > static int vfio_ap_mdev_create(struct mdev_device *mdev) > > { > > struct ap_matrix_mdev *matrix_mdev; > > @@ -366,16 +392,9 @@ static int vfio_ap_mdev_remove(struct mdev_device *mdev) > > struct ap_matrix_mdev *matrix_mdev = mdev_get_drvdata(mdev); > > mutex_lock(&matrix_dev->lock); > > - > > - /* > > - * If the KVM pointer is in flux or the guest is running, disallow > > - * un-assignment of control domain. > > - */ > > - if (matrix_mdev->kvm_busy || matrix_mdev->kvm) { > > - mutex_unlock(&matrix_dev->lock); > > - return -EBUSY; > > - } > > - > > + WARN(vfio_ap_mdev_has_crycb(matrix_mdev), > > + "Removing mdev leaves KVM guest without any crypto devices"); > > + vfio_ap_mdev_clear_apcb(matrix_mdev); > > Triggering a kernel warning due to an administrative task is not good. > Can't you simply clear the crycb? Maybe do a printk, but not a WARN. +1 Jason