On Mon, Oct 19, 2020 at 11:56:35PM +0800, 谢永吉 wrote: > > > > On Mon, Oct 19, 2020 at 11:47 PM Michael S. Tsirkin <mst@xxxxxxxxxx> wrote: > > On Mon, Oct 19, 2020 at 11:44:36PM +0800, 谢永吉 wrote: > > > > > > On Mon, Oct 19, 2020 at 11:05 PM Michael S. Tsirkin <mst@xxxxxxxxxx> > 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 <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. > > > > > > > > Should this happen? The refcount should be only decreased to 0 after the > > misc_device is closed? > > > > Thanks, > > Yongji > > > > OTOH if it never drops to 0 anyway then why do you need to increase it? > > > > To prevent unloading the module in the case that the device is created, but no > user process using it (e.g. the user process crashed). > > Thanks, > Yongji Looks like it can drop to 0 if that is the case then? > > > > > > > > -- > > > 2.25.1 > > > > > >