[PATCH v2] vsock: fix missing cleanup when misc_register failed

Subsystems: networking [general], the rest, vm sockets (af_vsock)

STALE3975d

2 messages, 2 authors, 2015-10-18 · open the first message on its own page

[PATCH v2] vsock: fix missing cleanup when misc_register failed

From: Gao feng <hidden>
Date: 2015-10-18 14:27:49

reset transport and unlock if misc_register failed.

Signed-off-by: Gao feng <redacted>
---
 net/vmw_vsock/af_vsock.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c
index df5fc6b..598e045 100644
--- a/net/vmw_vsock/af_vsock.c
+++ b/net/vmw_vsock/af_vsock.c
@@ -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_undegister_misc:
 	misc_deregister(&vsock_device);
+err_reset_transport:
 	transport = NULL;
 err_busy:
 	mutex_unlock(&vsock_register_mutex);
-- 
2.4.3

Re: [PATCH v2] vsock: fix missing cleanup when misc_register failed

From: kbuild test robot <hidden>
Date: 2015-10-18 15:27:34

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-223056
config: x86_64-allmodconfig (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:1957:17: sparse: label 'err_deregister_misc' was not declared
   net/vmw_vsock/af_vsock.c: In function '__vsock_core_init':
quoted
net/vmw_vsock/af_vsock.c:1972:1: warning: label 'err_undegister_misc' defined but not used [-Wunused-label]
    err_undegister_misc:
    ^
quoted
net/vmw_vsock/af_vsock.c:1957:3: error: label 'err_deregister_misc' used but not defined
      goto err_deregister_misc;
      ^

sparse warnings: (new ones prefixed by >>)
quoted
net/vmw_vsock/af_vsock.c:1957:17: sparse: label 'err_deregister_misc' was not declared
   net/vmw_vsock/af_vsock.c: In function '__vsock_core_init':
   net/vmw_vsock/af_vsock.c:1972:1: warning: label 'err_undegister_misc' defined but not used [-Wunused-label]
    err_undegister_misc:
    ^
   net/vmw_vsock/af_vsock.c:1957:3: error: label 'err_deregister_misc' used but not defined
      goto err_deregister_misc;
      ^

vim +/err_deregister_misc +1957 net/vmw_vsock/af_vsock.c

  1951			goto err_reset_transport;
  1952		}
  1953	
  1954		err = proto_register(&vsock_proto, 1);	/* we want our slab */
  1955		if (err) {
  1956			pr_err("Cannot register vsock protocol\n");
1957			goto err_deregister_misc;
  1958		}
  1959	
  1960		err = sock_register(&vsock_family_ops);
  1961		if (err) {
  1962			pr_err("could not register af_vsock (%d) address family: %d\n",
  1963			       AF_VSOCK, err);
  1964			goto err_unregister_proto;
  1965		}
  1966	
  1967		mutex_unlock(&vsock_register_mutex);
  1968		return 0;
  1969	
  1970	err_unregister_proto:
  1971		proto_unregister(&vsock_proto);
1972	err_undegister_misc:
  1973		misc_deregister(&vsock_device);
  1974	err_reset_transport:
  1975		transport = NULL;

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help