reset transport and unlock if misc_register failed.
Signed-off-by: Gao feng <redacted>
---
net/vmw_vsock/af_vsock.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c
index df5fc6b..5f5fbed 100644
--- a/net/vmw_vsock/af_vsock.c
+++ b/net/vmw_vsock/af_vsock.c
@@ -1948,7 +1948,7 @@ 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 */@@ -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_unregister_misc:
misc_deregister(&vsock_device);
+err_reset_transport:
transport = NULL;
err_busy:
mutex_unlock(&vsock_register_mutex);
--
2.4.3
Hi Gao,
[auto build test ERROR on net/master -- if it's inappropriate base, please suggest rules for selecting the more suitable base]
url: https://github.com/0day-ci/linux/commits/Gao-feng/vsock-fix-missing-cleanup-when-misc_register-failed/20151018-215542
config: x86_64-rhel (attached as .config)
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64
All error/warnings (new ones prefixed by >>):
net/vmw_vsock/af_vsock.c: In function '__vsock_core_init':quoted
net/vmw_vsock/af_vsock.c:1972:1: warning: label 'err_unregister_misc' defined but not used [-Wunused-label]
err_unregister_misc:
^quoted
net/vmw_vsock/af_vsock.c:1957:3: error: label 'err_misc_deregister' used but not defined
goto err_misc_deregister;
^
vim +/err_misc_deregister +1957 net/vmw_vsock/af_vsock.c
1ef231d1 Gao feng 2015-10-18 1951 goto err_reset_transport;
d021c344 Andy King 2013-02-06 1952 }
d021c344 Andy King 2013-02-06 1953
d021c344 Andy King 2013-02-06 1954 err = proto_register(&vsock_proto, 1); /* we want our slab */
d021c344 Andy King 2013-02-06 1955 if (err) {
d021c344 Andy King 2013-02-06 1956 pr_err("Cannot register vsock protocol\n");
d021c344 Andy King 2013-02-06 @1957 goto err_misc_deregister;
d021c344 Andy King 2013-02-06 1958 }
d021c344 Andy King 2013-02-06 1959
d021c344 Andy King 2013-02-06 1960 err = sock_register(&vsock_family_ops);
d021c344 Andy King 2013-02-06 1961 if (err) {
d021c344 Andy King 2013-02-06 1962 pr_err("could not register af_vsock (%d) address family: %d\n",
d021c344 Andy King 2013-02-06 1963 AF_VSOCK, err);
d021c344 Andy King 2013-02-06 1964 goto err_unregister_proto;
d021c344 Andy King 2013-02-06 1965 }
d021c344 Andy King 2013-02-06 1966
2c4a336e Andy King 2014-05-01 1967 mutex_unlock(&vsock_register_mutex);
d021c344 Andy King 2013-02-06 1968 return 0;
d021c344 Andy King 2013-02-06 1969
d021c344 Andy King 2013-02-06 1970 err_unregister_proto:
d021c344 Andy King 2013-02-06 1971 proto_unregister(&vsock_proto);
1ef231d1 Gao feng 2015-10-18 @1972 err_unregister_misc:
d021c344 Andy King 2013-02-06 1973 misc_deregister(&vsock_device);
1ef231d1 Gao feng 2015-10-18 1974 err_reset_transport:
d021c344 Andy King 2013-02-06 1975 transport = NULL;
:::::: The code at line 1957 was first introduced by commit
:::::: d021c344051af91f42c5ba9fdedc176740cbd238 VSOCK: Introduce VM Sockets
:::::: TO: Andy King [off-list ref]
:::::: CC: David S. Miller [off-list ref]
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation