aboutsummaryrefslogtreecommitdiffstats
path: root/net/sunrpc
diff options
context:
space:
mode:
authorJ. Bruce Fields <bfields@redhat.com>2012-08-13 18:01:03 -0400
committerJ. Bruce Fields <bfields@redhat.com>2012-08-21 14:08:41 -0400
commita8e10078a87c8a2c3c8d0f9856c0f74272fc0f74 (patch)
tree0201d0d2014e93d7529148aaa64393d6a02cc7d9 /net/sunrpc
parent72c3537607e42928f13691d59579ec840014b19e (diff)
svcrpc: clean up control flow
Mainly, use the kernel standard err = -ERROR; if (something_bad) goto out; normal case; rather than if (something_bad) err = -ERROR else { normal case; } Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'net/sunrpc')
-rw-r--r--net/sunrpc/svcsock.c69
1 files changed, 34 insertions, 35 deletions
diff --git a/net/sunrpc/svcsock.c b/net/sunrpc/svcsock.c
index d028b51a69ad..bf10b723f429 100644
--- a/net/sunrpc/svcsock.c
+++ b/net/sunrpc/svcsock.c
@@ -1451,44 +1451,42 @@ int svc_addsock(struct svc_serv *serv, const int fd, char *name_return,
1451 int err = 0; 1451 int err = 0;
1452 struct socket *so = sockfd_lookup(fd, &err); 1452 struct socket *so = sockfd_lookup(fd, &err);
1453 struct svc_sock *svsk = NULL; 1453 struct svc_sock *svsk = NULL;
1454 struct sockaddr_storage addr;
1455 struct sockaddr *sin = (struct sockaddr *)&addr;
1456 int salen;
1454 1457
1455 if (!so) 1458 if (!so)
1456 return err; 1459 return err;
1460 err = -EAFNOSUPPORT;
1457 if ((so->sk->sk_family != PF_INET) && (so->sk->sk_family != PF_INET6)) 1461 if ((so->sk->sk_family != PF_INET) && (so->sk->sk_family != PF_INET6))
1458 err = -EAFNOSUPPORT; 1462 goto out;
1459 else if (so->sk->sk_protocol != IPPROTO_TCP && 1463 err = -EPROTONOSUPPORT;
1464 if (so->sk->sk_protocol != IPPROTO_TCP &&
1460 so->sk->sk_protocol != IPPROTO_UDP) 1465 so->sk->sk_protocol != IPPROTO_UDP)
1461 err = -EPROTONOSUPPORT; 1466 goto out;
1462 else if (so->state > SS_UNCONNECTED) 1467 err = -EISCONN;
1463 err = -EISCONN; 1468 if (so->state > SS_UNCONNECTED)
1464 else { 1469 goto out;
1465 if (!try_module_get(THIS_MODULE)) 1470 err = -ENOENT;
1466 err = -ENOENT; 1471 if (!try_module_get(THIS_MODULE))
1467 else { 1472 goto out;
1468 svsk = svc_setup_socket(serv, so, SVC_SOCK_DEFAULTS); 1473 svsk = svc_setup_socket(serv, so, SVC_SOCK_DEFAULTS);
1469 if (IS_ERR(svsk)) 1474 if (IS_ERR(svsk)) {
1470 err = PTR_ERR(svsk); 1475 module_put(THIS_MODULE);
1471 } 1476 err = PTR_ERR(svsk);
1472 if (err == 0) { 1477 goto out;
1473 struct sockaddr_storage addr;
1474 struct sockaddr *sin = (struct sockaddr *)&addr;
1475 int salen;
1476 if (kernel_getsockname(svsk->sk_sock, sin, &salen) == 0)
1477 svc_xprt_set_local(&svsk->sk_xprt, sin, salen);
1478 clear_bit(XPT_TEMP, &svsk->sk_xprt.xpt_flags);
1479 spin_lock_bh(&serv->sv_lock);
1480 list_add(&svsk->sk_xprt.xpt_list, &serv->sv_permsocks);
1481 spin_unlock_bh(&serv->sv_lock);
1482 svc_xprt_received(&svsk->sk_xprt);
1483 err = 0;
1484 } else
1485 module_put(THIS_MODULE);
1486 }
1487 if (err) {
1488 sockfd_put(so);
1489 return err;
1490 } 1478 }
1479 if (kernel_getsockname(svsk->sk_sock, sin, &salen) == 0)
1480 svc_xprt_set_local(&svsk->sk_xprt, sin, salen);
1481 clear_bit(XPT_TEMP, &svsk->sk_xprt.xpt_flags);
1482 spin_lock_bh(&serv->sv_lock);
1483 list_add(&svsk->sk_xprt.xpt_list, &serv->sv_permsocks);
1484 spin_unlock_bh(&serv->sv_lock);
1485 svc_xprt_received(&svsk->sk_xprt);
1491 return svc_one_sock_name(svsk, name_return, len); 1486 return svc_one_sock_name(svsk, name_return, len);
1487out:
1488 sockfd_put(so);
1489 return err;
1492} 1490}
1493EXPORT_SYMBOL_GPL(svc_addsock); 1491EXPORT_SYMBOL_GPL(svc_addsock);
1494 1492
@@ -1567,11 +1565,12 @@ static struct svc_xprt *svc_create_socket(struct svc_serv *serv,
1567 } 1565 }
1568 1566
1569 svsk = svc_setup_socket(serv, sock, flags); 1567 svsk = svc_setup_socket(serv, sock, flags);
1570 if (!IS_ERR(svsk)) { 1568 if (IS_ERR(svsk)) {
1571 svc_xprt_set_local(&svsk->sk_xprt, newsin, newlen); 1569 error = PTR_ERR(svsk);
1572 return (struct svc_xprt *)svsk; 1570 goto bummer;
1573 } 1571 }
1574 error = PTR_ERR(svsk); 1572 svc_xprt_set_local(&svsk->sk_xprt, newsin, newlen);
1573 return (struct svc_xprt *)svsk;
1575bummer: 1574bummer:
1576 dprintk("svc: svc_create_socket error = %d\n", -error); 1575 dprintk("svc: svc_create_socket error = %d\n", -error);
1577 sock_release(sock); 1576 sock_release(sock);