On Tue, Mar 3, 2026 at 4:07 PM Jason Gunthorpe <[email protected]> wrote: > > On Thu, Feb 26, 2026 at 04:03:53PM -0700, Alex Williamson wrote: > > > @@ -203,5 +225,6 @@ void vfio_pci_liveupdate_cleanup(void) > > > if (!liveupdate_enabled()) > > > return; > > > > > > + WARN_ON_ONCE(pci_liveupdate_unregister_fh(&vfio_pci_liveupdate_fh)); > > > > This is propagation of a poor API choice in liveupdate, the unregister > > should return void, it shouldn't be allowed to fail, IMO. Thanks, > > +1 > > "destroy" functions that fail are evil. :)
Generally, I agree that unregister, free, or destroy functions shouldn't return errors. However, this situation is tricky because the state is controlled by user space. The only relavent scenario where this function fails is: "-EBUSY if the live update session is active and cannot be quiesced." If there are active sessions (incoming or outgoing) with preserved data, how can we safely unregister while they are in-flight? It is a rare condition, but since the user can cause it, they need to be notified that unloading the module right now is not a good idea. Pasha > > Jason

