On Mon, Oct 19, 2020 at 10:56:22PM +0800, Xie Yongji wrote:
quoted hunk
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 <redacted>
---
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
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization