Skip to content

Commit

Permalink
vsock: fix missing cleanup when misc_register failed
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
gao-feng authored and davem330 committed Oct 21, 2015
1 parent 10be15f commit f6a835b
Showing 1 changed file with 4 additions and 3 deletions.
7 changes: 4 additions & 3 deletions net/vmw_vsock/af_vsock.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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);
Expand Down

0 comments on commit f6a835b

Please sign in to comment.