On Mon, Oct 19, 2020 at 10:56:22PM +0800, Xie Yongji wrote: > The module should not be unloaded if any vduse device exists. > So increase the module's reference count when creating vduse > device. And the reference count is kept until the device is > destroyed. > > Signed-off-by: Xie Yongji <xieyongji@xxxxxxxxxxxxx> > --- > drivers/vdpa/vdpa_user/vduse_dev.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/vdpa/vdpa_user/vduse_dev.c b/drivers/vdpa/vdpa_user/vduse_dev.c > index 6787ba66725c..f04aa02de8c1 100644 > --- a/drivers/vdpa/vdpa_user/vduse_dev.c > +++ b/drivers/vdpa/vdpa_user/vduse_dev.c > @@ -887,6 +887,7 @@ static int vduse_destroy_dev(u32 id) > kfree(dev->vqs); > vduse_iova_domain_destroy(dev->domain); > vduse_dev_destroy(dev); > + module_put(THIS_MODULE); > > return 0; > } > @@ -931,6 +932,7 @@ static int vduse_create_dev(struct vduse_dev_config *config) > > dev->connected = true; > list_add(&dev->list, &vduse_devs); > + __module_get(THIS_MODULE); > > return fd; > err_fd: This kind of thing is usually an indicator of a bug. E.g. if the refcount drops to 0 on module_put(THIS_MODULE) it will be unloaded and the following return will not run. > -- > 2.25.1