vsock: fix missing cleanup when misc_register failed
reset transport and unlock if misc_register failed. Signed-off-by: Gao feng <omarapazanadi@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
10be15ff6c
commit
f6a835bb04
|
@ -1948,13 +1948,13 @@ int __vsock_core_init(const struct vsock_transport *t, struct module *owner)
|
|||
err = misc_register(&vsock_device);
|
||||
if (err) {
|
||||
pr_err("Failed to register misc device\n");
|
||||
return -ENOENT;
|
||||
goto err_reset_transport;
|
||||
}
|
||||
|
||||
err = proto_register(&vsock_proto, 1); /* we want our slab */
|
||||
if (err) {
|
||||
pr_err("Cannot register vsock protocol\n");
|
||||
goto err_misc_deregister;
|
||||
goto err_deregister_misc;
|
||||
}
|
||||
|
||||
err = sock_register(&vsock_family_ops);
|
||||
|
@ -1969,8 +1969,9 @@ int __vsock_core_init(const struct vsock_transport *t, struct module *owner)
|
|||
|
||||
err_unregister_proto:
|
||||
proto_unregister(&vsock_proto);
|
||||
err_misc_deregister:
|
||||
err_deregister_misc:
|
||||
misc_deregister(&vsock_device);
|
||||
err_reset_transport:
|
||||
transport = NULL;
|
||||
err_busy:
|
||||
mutex_unlock(&vsock_register_mutex);
|
||||
|
|
Loading…
Reference in New Issue