9p: implement proper trans module refcounting and unregistration
9p trans modules aren't refcounted nor were they unregistered properly. Fix it. * Add 9p_trans_module->owner and reference the module on each trans instance creation and put it on destruction. * Protect v9fs_trans_list with a spinlock. This isn't strictly necessary as the list is manipulated only during module loading / unloading but it's a good idea to make the API safe. * Unregister trans modules when the corresponding module is being unloaded. * While at it, kill unnecessary EXPORT_SYMBOL on p9_trans_fd_init(). Signed-off-by: Tejun Heo <tj@kernel.org> Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>
This commit is contained in:

committed by
Eric Van Hensbergen

parent
72d31053f6
commit
72029fe85d
@@ -528,6 +528,7 @@ static struct p9_trans_module p9_virtio_trans = {
|
||||
.create = p9_virtio_create,
|
||||
.maxsize = PAGE_SIZE*16,
|
||||
.def = 0,
|
||||
.owner = THIS_MODULE,
|
||||
};
|
||||
|
||||
/* The standard init function */
|
||||
@@ -545,6 +546,7 @@ static int __init p9_virtio_init(void)
|
||||
static void __exit p9_virtio_cleanup(void)
|
||||
{
|
||||
unregister_virtio_driver(&p9_virtio_drv);
|
||||
v9fs_unregister_trans(&p9_virtio_trans);
|
||||
}
|
||||
|
||||
module_init(p9_virtio_init);
|
||||
|
Reference in New Issue
Block a user