Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a8e10078 authored by J. Bruce Fields's avatar J. Bruce Fields
Browse files

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: default avatarJ. Bruce Fields <bfields@redhat.com>
parent 72c35376
Loading
Loading
Loading
Loading
+34 −35
Original line number Diff line number Diff line
@@ -1451,28 +1451,31 @@ int svc_addsock(struct svc_serv *serv, const int fd, char *name_return,
	int err = 0;
	struct socket *so = sockfd_lookup(fd, &err);
	struct svc_sock *svsk = NULL;
	struct sockaddr_storage addr;
	struct sockaddr *sin = (struct sockaddr *)&addr;
	int salen;

	if (!so)
		return err;
	if ((so->sk->sk_family != PF_INET) && (so->sk->sk_family != PF_INET6))
	err = -EAFNOSUPPORT;
	else if (so->sk->sk_protocol != IPPROTO_TCP &&
	    so->sk->sk_protocol != IPPROTO_UDP)
	if ((so->sk->sk_family != PF_INET) && (so->sk->sk_family != PF_INET6))
		goto out;
	err =  -EPROTONOSUPPORT;
	else if (so->state > SS_UNCONNECTED)
	if (so->sk->sk_protocol != IPPROTO_TCP &&
	    so->sk->sk_protocol != IPPROTO_UDP)
		goto out;
	err = -EISCONN;
	else {
		if (!try_module_get(THIS_MODULE))
	if (so->state > SS_UNCONNECTED)
		goto out;
	err = -ENOENT;
		else {
	if (!try_module_get(THIS_MODULE))
		goto out;
	svsk = svc_setup_socket(serv, so, SVC_SOCK_DEFAULTS);
			if (IS_ERR(svsk))
	if (IS_ERR(svsk)) {
		module_put(THIS_MODULE);
		err = PTR_ERR(svsk);
		goto out;
	}
		if (err == 0) {
			struct sockaddr_storage addr;
			struct sockaddr *sin = (struct sockaddr *)&addr;
			int salen;
	if (kernel_getsockname(svsk->sk_sock, sin, &salen) == 0)
		svc_xprt_set_local(&svsk->sk_xprt, sin, salen);
	clear_bit(XPT_TEMP, &svsk->sk_xprt.xpt_flags);
@@ -1480,16 +1483,11 @@ int svc_addsock(struct svc_serv *serv, const int fd, char *name_return,
	list_add(&svsk->sk_xprt.xpt_list, &serv->sv_permsocks);
	spin_unlock_bh(&serv->sv_lock);
	svc_xprt_received(&svsk->sk_xprt);
			err = 0;
		} else
			module_put(THIS_MODULE);
	}
	if (err) {
	return svc_one_sock_name(svsk, name_return, len);
out:
	sockfd_put(so);
	return err;
}
	return svc_one_sock_name(svsk, name_return, len);
}
EXPORT_SYMBOL_GPL(svc_addsock);

/*
@@ -1567,11 +1565,12 @@ static struct svc_xprt *svc_create_socket(struct svc_serv *serv,
	}

	svsk = svc_setup_socket(serv, sock, flags);
	if (!IS_ERR(svsk)) {
	if (IS_ERR(svsk)) {
		error = PTR_ERR(svsk);
		goto bummer;
	}
	svc_xprt_set_local(&svsk->sk_xprt, newsin, newlen);
	return (struct svc_xprt *)svsk;
	}
	error = PTR_ERR(svsk);
bummer:
	dprintk("svc: svc_create_socket error = %d\n", -error);
	sock_release(sock);