On 12/10/2018 2:07 PM, Jason Gunthorpe wrote: > On Mon, Dec 10, 2018 at 01:47:39PM -0600, Steve Wise wrote: >> On 12/7/2018 1:25 PM, Jason Gunthorpe wrote: >>> I don't like messing with module refcount to solve a locking problem.. >>> Here something like this compile-tested thing.. >>> >>> Instead of implementing dellink as a function call implement it as a >>> flag 'ALLOW_USER_UNREGISTER'. The core code simply calls >>> ib_unregister_device_and_put() upon dellink. >>> >> Why don't we just mandate that if a driver uses rdma_link_ops, then it >> must support the core doing the ib_unregister_device_and_put() on a >> DELLINK nlmsg? > Yes, exactly. > > But conversely we must prevent dellink from running if the device was > not created by a compatible driver That'll be handled by virtue that only devices created via NEWLINK will have the driver's link_ops pointer cached in the ib_device.