diff options
author | J. Bruce Fields <bfields@redhat.com> | 2012-08-13 18:01:03 -0400 |
---|---|---|
committer | J. Bruce Fields <bfields@redhat.com> | 2012-08-21 14:08:41 -0400 |
commit | a8e10078a87c8a2c3c8d0f9856c0f74272fc0f74 (patch) | |
tree | 0201d0d2014e93d7529148aaa64393d6a02cc7d9 /net/sunrpc | |
parent | 72c3537607e42928f13691d59579ec840014b19e (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.c | 69 |
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); |
1487 | out: | ||
1488 | sockfd_put(so); | ||
1489 | return err; | ||
1492 | } | 1490 | } |
1493 | EXPORT_SYMBOL_GPL(svc_addsock); | 1491 | EXPORT_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; | ||
1575 | bummer: | 1574 | bummer: |
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); |