On Mon, Oct 19, 2020 at 11:05 PM Michael S. Tsirkin wrote: > 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 > > --- > > 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. > > Should this happen? The refcount should be only decreased to 0 after the misc_device is closed? Thanks, Yongji > > > > -- > > 2.25.1 > >