[<prev] [next>] [day] [month] [year] [list]
Message-ID: <cd397d5671ee4c15acee4c5b008f85dd@AcuMS.aculab.com>
Date: Tue, 26 May 2020 16:40:03 +0000
From: David Laight <David.Laight@...LAB.COM>
To: 'Vlad Yasevich' <vyasevich@...il.com>,
'Neil Horman' <nhorman@...driver.com>,
"'David S. Miller'" <davem@...emloft.net>,
"'Jakub Kicinski'" <kuba@...nel.org>,
"'linux-sctp@...r.kernel.org'" <linux-sctp@...r.kernel.org>,
"'netdev@...r.kernel.org'" <netdev@...r.kernel.org>,
'Christoph Hellwig' <hch@....de>,
"'Marcelo Ricardo Leitner'" <marcelo.leitner@...il.com>
Subject: [PATCH v3 net-next 7/8] sctp: setsockopt, remove 'goto out'
Replace most of the 'goto out' with 'return -Exxxxxx'.
Signed-off-by: David Laight <david.laight@...lab.com>
---
net/sctp/socket.c | 360 +++++++++++++++++-------------------------------------
1 file changed, 110 insertions(+), 250 deletions(-)
diff --git a/net/sctp/socket.c b/net/sctp/socket.c
index 1481372..6d35ea3 100644
--- a/net/sctp/socket.c
+++ b/net/sctp/socket.c
@@ -1297,7 +1297,7 @@ static int __sctp_setsockopt_connectx(struct sock *sk,
(struct sockaddr *)kaddrs,
addrs_size);
if (err)
- goto out_free;
+ return err;
/* in-kernel sockets don't generally have a file allocated to them
* if all they do is call sock_create_kern().
@@ -1305,10 +1305,7 @@ static int __sctp_setsockopt_connectx(struct sock *sk,
if (sk->sk_socket->file)
flags = sk->sk_socket->file->f_flags;
- err = __sctp_connect(sk, kaddrs, addrs_size, flags, assoc_id);
-
-out_free:
- return err;
+ return __sctp_connect(sk, kaddrs, addrs_size, flags, assoc_id);
}
/*
@@ -3559,7 +3556,6 @@ static int sctp_setsockopt_hmac_ident(struct sock *sk,
{
struct sctp_endpoint *ep = sctp_sk(sk)->ep;
u32 idents;
- int err;
if (!ep->auth_enable)
return -EACCES;
@@ -3571,14 +3567,10 @@ static int sctp_setsockopt_hmac_ident(struct sock *sk,
idents = hmacs->shmac_num_idents;
if (idents == 0 || idents > SCTP_AUTH_NUM_HMACS ||
- (idents * sizeof(u16)) > (optlen - sizeof(struct sctp_hmacalgo))) {
- err = -EINVAL;
- goto out;
- }
+ (idents * sizeof(u16)) > (optlen - sizeof(struct sctp_hmacalgo)))
+ return -EINVAL;
- err = sctp_auth_ep_set_hmacs(ep, hmacs);
-out:
- return err;
+ return sctp_auth_ep_set_hmacs(ep, hmacs);
}
/*
@@ -3943,13 +3935,12 @@ static int sctp_setsockopt_default_prinfo(struct sock *sk,
{
struct sctp_sock *sp = sctp_sk(sk);
struct sctp_association *asoc;
- int retval = -EINVAL;
if (optlen != sizeof(*info))
- goto out;
+ return -EINVAL;
if (info->pr_policy & ~SCTP_PR_SCTP_MASK)
- goto out;
+ return -EINVAL;
if (info->pr_policy == SCTP_PR_SCTP_NONE)
info->pr_value = 0;
@@ -3957,14 +3948,12 @@ static int sctp_setsockopt_default_prinfo(struct sock *sk,
asoc = sctp_id2assoc(sk, info->pr_assoc_id);
if (!asoc && info->pr_assoc_id > SCTP_ALL_ASSOC &&
sctp_style(sk, UDP))
- goto out;
-
- retval = 0;
+ return -EINVAL;
if (asoc) {
SCTP_PR_SET_POLICY(asoc->default_flags, info->pr_policy);
asoc->default_timetolive = info->pr_value;
- goto out;
+ return 0;
}
if (sctp_style(sk, TCP))
@@ -3984,8 +3973,7 @@ static int sctp_setsockopt_default_prinfo(struct sock *sk,
}
}
-out:
- return retval;
+ return 0;
}
static int sctp_setsockopt_reconfig_supported(struct sock *sk,
@@ -3993,22 +3981,18 @@ static int sctp_setsockopt_reconfig_supported(struct sock *sk,
unsigned int optlen)
{
struct sctp_association *asoc;
- int retval = -EINVAL;
if (optlen != sizeof(*params))
- goto out;
+ return -EINVAL;
asoc = sctp_id2assoc(sk, params->assoc_id);
if (!asoc && params->assoc_id != SCTP_FUTURE_ASSOC &&
sctp_style(sk, UDP))
- goto out;
+ return -EINVAL;
sctp_sk(sk)->ep->reconf_enable = !!params->assoc_value;
- retval = 0;
-
-out:
- return retval;
+ return 0;
}
static int sctp_setsockopt_enable_strreset(struct sock *sk,
@@ -4017,24 +4001,21 @@ static int sctp_setsockopt_enable_strreset(struct sock *sk,
{
struct sctp_endpoint *ep = sctp_sk(sk)->ep;
struct sctp_association *asoc;
- int retval = -EINVAL;
if (optlen != sizeof(*params))
- goto out;
+ return -EINVAL;
if (params->assoc_value & (~SCTP_ENABLE_STRRESET_MASK))
- goto out;
+ return -EINVAL;
asoc = sctp_id2assoc(sk, params->assoc_id);
if (!asoc && params->assoc_id > SCTP_ALL_ASSOC &&
sctp_style(sk, UDP))
- goto out;
-
- retval = 0;
+ return -EINVAL;
if (asoc) {
asoc->strreset_enable = params->assoc_value;
- goto out;
+ return 0;
}
if (sctp_style(sk, TCP))
@@ -4049,8 +4030,7 @@ static int sctp_setsockopt_enable_strreset(struct sock *sk,
list_for_each_entry(asoc, &ep->asocs, asocs)
asoc->strreset_enable = params->assoc_value;
-out:
- return retval;
+ return 0;
}
static int sctp_setsockopt_reset_streams(struct sock *sk,
@@ -4058,7 +4038,6 @@ static int sctp_setsockopt_reset_streams(struct sock *sk,
unsigned int optlen)
{
struct sctp_association *asoc;
- int retval = -EINVAL;
if (optlen < sizeof(*params))
return -EINVAL;
@@ -4068,35 +4047,28 @@ static int sctp_setsockopt_reset_streams(struct sock *sk,
if (params->srs_number_streams * sizeof(__u16) >
optlen - sizeof(*params))
- goto out;
+ return -EINVAL;
asoc = sctp_id2assoc(sk, params->srs_assoc_id);
if (!asoc)
- goto out;
-
- retval = sctp_send_reset_streams(asoc, params);
+ return -EINVAL;
-out:
- return retval;
+ return sctp_send_reset_streams(asoc, params);
}
static int sctp_setsockopt_reset_assoc(struct sock *sk, sctp_assoc_t *associd,
unsigned int optlen)
{
struct sctp_association *asoc;
- int retval = -EINVAL;
if (optlen != sizeof(*associd))
- goto out;
+ return -EINVAL;
asoc = sctp_id2assoc(sk, (*associd));
if (!asoc)
- goto out;
-
- retval = sctp_send_reset_assoc(asoc);
+ return -EINVAL;
-out:
- return retval;
+ return sctp_send_reset_assoc(asoc);
}
static int sctp_setsockopt_add_streams(struct sock *sk,
@@ -4104,19 +4076,15 @@ static int sctp_setsockopt_add_streams(struct sock *sk,
unsigned int optlen)
{
struct sctp_association *asoc;
- int retval = -EINVAL;
if (optlen != sizeof(*params))
- goto out;
+ return -EINVAL;
asoc = sctp_id2assoc(sk, params->sas_assoc_id);
if (!asoc)
- goto out;
-
- retval = sctp_send_add_streams(asoc, params);
+ return -EINVAL;
-out:
- return retval;
+ return sctp_send_add_streams(asoc, params);
}
static int sctp_setsockopt_scheduler(struct sock *sk,
@@ -4167,21 +4135,19 @@ static int sctp_setsockopt_scheduler_value(struct sock *sk,
unsigned int optlen)
{
struct sctp_association *asoc;
- int retval = -EINVAL;
+ int retval;
if (optlen < sizeof(*params))
- goto out;
+ return -EINVAL;
asoc = sctp_id2assoc(sk, params->assoc_id);
if (!asoc && params->assoc_id != SCTP_CURRENT_ASSOC &&
sctp_style(sk, UDP))
- goto out;
+ return -EINVAL;
- if (asoc) {
- retval = sctp_sched_set_value(asoc, params->stream_id,
+ if (asoc)
+ return sctp_sched_set_value(asoc, params->stream_id,
params->stream_value, GFP_KERNEL);
- goto out;
- }
retval = 0;
@@ -4192,7 +4158,6 @@ static int sctp_setsockopt_scheduler_value(struct sock *sk,
retval = ret;
}
-out:
return retval;
}
@@ -4202,27 +4167,21 @@ static int sctp_setsockopt_interleaving_supported(struct sock *sk,
{
struct sctp_sock *sp = sctp_sk(sk);
struct sctp_association *asoc;
- int retval = -EINVAL;
if (optlen < sizeof(*params))
- goto out;
+ return -EINVAL;
asoc = sctp_id2assoc(sk, params->assoc_id);
if (!asoc && params->assoc_id != SCTP_FUTURE_ASSOC &&
sctp_style(sk, UDP))
- goto out;
+ return -EINVAL;
- if (!sock_net(sk)->sctp.intl_enable || !sp->frag_interleave) {
- retval = -EPERM;
- goto out;
- }
+ if (!sock_net(sk)->sctp.intl_enable || !sp->frag_interleave)
+ return -EPERM;
sp->ep->intl_enable = !!params->assoc_value;
- retval = 0;
-
-out:
- return retval;
+ return 0;
}
static int sctp_setsockopt_reuse_port(struct sock *sk, int *optval,
@@ -4312,15 +4271,14 @@ static int sctp_setsockopt_asconf_supported(struct sock *sk,
{
struct sctp_association *asoc;
struct sctp_endpoint *ep;
- int retval = -EINVAL;
if (optlen != sizeof(*params))
- goto out;
+ return -EINVAL;
asoc = sctp_id2assoc(sk, params->assoc_id);
if (!asoc && params->assoc_id != SCTP_FUTURE_ASSOC &&
sctp_style(sk, UDP))
- goto out;
+ return -EINVAL;
ep = sctp_sk(sk)->ep;
ep->asconf_enable = !!params->assoc_value;
@@ -4330,10 +4288,7 @@ static int sctp_setsockopt_asconf_supported(struct sock *sk,
sctp_auth_ep_add_chunkid(ep, SCTP_CID_ASCONF_ACK);
}
- retval = 0;
-
-out:
- return retval;
+ return 0;
}
static int sctp_setsockopt_auth_supported(struct sock *sk,
@@ -4342,21 +4297,21 @@ static int sctp_setsockopt_auth_supported(struct sock *sk,
{
struct sctp_association *asoc;
struct sctp_endpoint *ep;
- int retval = -EINVAL;
+ int retval;
if (optlen != sizeof(*params))
- goto out;
+ return -EINVAL;
asoc = sctp_id2assoc(sk, params->assoc_id);
if (!asoc && params->assoc_id != SCTP_FUTURE_ASSOC &&
sctp_style(sk, UDP))
- goto out;
+ return -EINVAL;
ep = sctp_sk(sk)->ep;
if (params->assoc_value) {
retval = sctp_auth_init(ep, GFP_KERNEL);
if (retval)
- goto out;
+ return retval;
if (ep->asconf_enable) {
sctp_auth_ep_add_chunkid(ep, SCTP_CID_ASCONF);
sctp_auth_ep_add_chunkid(ep, SCTP_CID_ASCONF_ACK);
@@ -4364,10 +4319,7 @@ static int sctp_setsockopt_auth_supported(struct sock *sk,
}
ep->auth_enable = !!params->assoc_value;
- retval = 0;
-
-out:
- return retval;
+ return 0;
}
static int sctp_setsockopt_ecn_supported(struct sock *sk,
@@ -4375,21 +4327,17 @@ static int sctp_setsockopt_ecn_supported(struct sock *sk,
unsigned int optlen)
{
struct sctp_association *asoc;
- int retval = -EINVAL;
if (optlen != sizeof(*params))
- goto out;
+ return -EINVAL;
asoc = sctp_id2assoc(sk, params->assoc_id);
if (!asoc && params->assoc_id != SCTP_FUTURE_ASSOC &&
sctp_style(sk, UDP))
- goto out;
+ return -EINVAL;
sctp_sk(sk)->ep->ecn_enable = !!params->assoc_value;
- retval = 0;
-
-out:
- return retval;
+ return 0;
}
static int sctp_setsockopt_pf_expose(struct sock *sk,
@@ -4397,27 +4345,24 @@ static int sctp_setsockopt_pf_expose(struct sock *sk,
unsigned int optlen)
{
struct sctp_association *asoc;
- int retval = -EINVAL;
if (optlen != sizeof(*params))
- goto out;
+ return -EINVAL;
if (params->assoc_value > SCTP_PF_EXPOSE_MAX)
- goto out;
+ return -EINVAL;
asoc = sctp_id2assoc(sk, params->assoc_id);
if (!asoc && params->assoc_id != SCTP_FUTURE_ASSOC &&
sctp_style(sk, UDP))
- goto out;
+ return -EINVAL;
if (asoc)
asoc->pf_expose = params->assoc_value;
else
sctp_sk(sk)->pf_expose = params->assoc_value;
- retval = 0;
-out:
- return retval;
+ return 0;
}
static int kernel_sctp_setsockopt(struct sock *sk, int optname, void *optval,
@@ -5289,21 +5234,16 @@ static int sctp_getsockopt_sctp_status(struct sock *sk, int len,
struct sctp_association *asoc = NULL;
struct sctp_transport *transport;
sctp_assoc_t associd;
- int retval = 0;
- if (len < sizeof(*status)) {
- retval = -EINVAL;
- goto out;
- }
+ if (len < sizeof(*status))
+ return -EINVAL;
*optlen = sizeof(*status);
associd = status->sstat_assoc_id;
asoc = sctp_id2assoc(sk, associd);
- if (!asoc) {
- retval = -EINVAL;
- goto out;
- }
+ if (!asoc)
+ return -EINVAL;
transport = asoc->peer.primary_path;
@@ -5335,8 +5275,7 @@ static int sctp_getsockopt_sctp_status(struct sock *sk, int len,
__func__, len, status->sstat_state, status->sstat_rwnd,
status->sstat_assoc_id);
-out:
- return retval;
+ return 0;
}
@@ -5352,27 +5291,20 @@ static int sctp_getsockopt_peer_addr_info(struct sock *sk, int len,
int *optlen)
{
struct sctp_transport *transport;
- int retval = 0;
- if (len < sizeof(*pinfo)) {
- retval = -EINVAL;
- goto out;
- }
+ if (len < sizeof(*pinfo))
+ return -EINVAL;
*optlen = sizeof(*pinfo);
transport = sctp_addr_id2transport(sk, &pinfo->spinfo_address,
pinfo->spinfo_assoc_id);
- if (!transport) {
- retval = -EINVAL;
- goto out;
- }
+ if (!transport)
+ return -EINVAL;
if (transport->state == SCTP_PF &&
- transport->asoc->pf_expose == SCTP_PF_EXPOSE_DISABLE) {
- retval = -EACCES;
- goto out;
- }
+ transport->asoc->pf_expose == SCTP_PF_EXPOSE_DISABLE)
+ return -EACCES;
pinfo->spinfo_assoc_id = sctp_assoc2id(transport->asoc);
pinfo->spinfo_state = transport->state;
@@ -5384,8 +5316,7 @@ static int sctp_getsockopt_peer_addr_info(struct sock *sk, int len,
if (pinfo->spinfo_state == SCTP_UNKNOWN)
pinfo->spinfo_state = SCTP_ACTIVE;
-out:
- return retval;
+ return 0;
}
/* 7.1.12 Enable/Disable message fragmentation (SCTP_DISABLE_FRAGMENTS)
@@ -5507,20 +5438,19 @@ static int sctp_getsockopt_peeloff_common(struct sock *sk, sctp_peeloff_arg_t *p
retval = sctp_do_peeloff(sk, peeloff->associd, &newsock);
if (retval < 0)
- goto out;
+ return retval;
/* Map the socket to an unused fd that can be returned to the user. */
retval = get_unused_fd_flags(flags & SOCK_CLOEXEC);
if (retval < 0) {
sock_release(newsock);
- goto out;
+ return retval;
}
newfile = sock_alloc_file(newsock, 0, NULL);
if (IS_ERR(newfile)) {
put_unused_fd(retval);
- retval = PTR_ERR(newfile);
- return retval;
+ return PTR_ERR(newfile);
}
pr_debug("%s: sk:%p, newsk:%p, sd:%d\n", __func__, sk, newsock->sk,
@@ -5539,7 +5469,6 @@ static int sctp_getsockopt_peeloff_common(struct sock *sk, sctp_peeloff_arg_t *p
*/
fd_install(retval, newfile);
-out:
return retval;
}
@@ -6006,7 +5935,6 @@ static int sctp_getsockopt_local_addrs(struct sock *sk, int len,
union sctp_addr temp;
struct sctp_sock *sp = sctp_sk(sk);
int addrlen;
- int err = 0;
size_t space_left;
int bytes_copied = 0;
void *addrs;
@@ -6042,10 +5970,8 @@ static int sctp_getsockopt_local_addrs(struct sock *sk, int len,
if (sctp_is_any(sk, &addr->a)) {
cnt = sctp_copy_laddrs(sk, bp->port, addrs,
space_left, &bytes_copied);
- if (cnt < 0) {
- err = cnt;
- goto out;
- }
+ if (cnt < 0)
+ return cnt;
goto copy_getaddrs;
}
}
@@ -6059,10 +5985,8 @@ static int sctp_getsockopt_local_addrs(struct sock *sk, int len,
memcpy(&temp, &addr->a, sizeof(temp));
addrlen = sctp_get_pf_specific(sk->sk_family)
->addr_to_user(sp, &temp);
- if (space_left < addrlen) {
- err = -ENOMEM; /*fixme: right error?*/
- goto out;
- }
+ if (space_left < addrlen)
+ return -ENOMEM; /*fixme: right error?*/
memcpy(buf, &temp, addrlen);
buf += addrlen;
bytes_copied += addrlen;
@@ -6077,8 +6001,8 @@ static int sctp_getsockopt_local_addrs(struct sock *sk, int len,
* after the buffer is copied but before the length is returned.
*/
*optlen = sizeof(struct sctp_getaddrs) + bytes_copied;
-out:
- return err;
+
+ return 0;
}
/* 7.1.10 Set Primary Address (SCTP_PRIMARY_ADDR)
@@ -6748,7 +6672,7 @@ static int sctp_getsockopt_paddr_thresholds(struct sock *sk,
val->spt_pathpfthld = trans->pf_retrans;
val->spt_pathcpthld = trans->ps_retrans;
- goto out;
+ return 0;
}
asoc = sctp_id2assoc(sk, val->spt_assoc_id);
@@ -6768,7 +6692,6 @@ static int sctp_getsockopt_paddr_thresholds(struct sock *sk,
val->spt_pathcpthld = sp->ps_retrans;
}
-out:
return 0;
}
@@ -6904,21 +6827,20 @@ static int sctp_getsockopt_pr_assocstatus(struct sock *sk, int len,
{
struct sctp_association *asoc;
int policy;
- int retval = -EINVAL;
if (len < sizeof(*params))
- goto out;
+ return -EINVAL;
*optlen = sizeof(*params);
policy = params->sprstat_policy;
if (!policy || (policy & ~(SCTP_PR_SCTP_MASK | SCTP_PR_SCTP_ALL)) ||
((policy & SCTP_PR_SCTP_ALL) && (policy & SCTP_PR_SCTP_MASK)))
- goto out;
+ return -EINVAL;
asoc = sctp_id2assoc(sk, params->sprstat_assoc_id);
if (!asoc)
- goto out;
+ return -EINVAL;
if (policy == SCTP_PR_SCTP_ALL) {
params->sprstat_abandoned_unsent = 0;
@@ -6936,10 +6858,7 @@ static int sctp_getsockopt_pr_assocstatus(struct sock *sk, int len,
asoc->abandoned_sent[__SCTP_PR_INDEX(policy)];
}
- retval = 0;
-
-out:
- return retval;
+ return 0;
}
static int sctp_getsockopt_pr_streamstatus(struct sock *sk, int len,
@@ -6948,30 +6867,28 @@ static int sctp_getsockopt_pr_streamstatus(struct sock *sk, int len,
{
struct sctp_stream_out_ext *streamoute;
struct sctp_association *asoc;
- int retval = -EINVAL;
int policy;
if (len < sizeof(*params))
- goto out;
+ return -EINVAL;
*optlen = sizeof(*params);
policy = params->sprstat_policy;
if (!policy || (policy & ~(SCTP_PR_SCTP_MASK | SCTP_PR_SCTP_ALL)) ||
((policy & SCTP_PR_SCTP_ALL) && (policy & SCTP_PR_SCTP_MASK)))
- goto out;
+ return -EINVAL;
asoc = sctp_id2assoc(sk, params->sprstat_assoc_id);
if (!asoc || params->sprstat_sid >= asoc->stream.outcnt)
- goto out;
+ return -EINVAL;
streamoute = SCTP_SO(&asoc->stream, params->sprstat_sid)->ext;
if (!streamoute) {
/* Not allocated yet, means all stats are 0 */
params->sprstat_abandoned_unsent = 0;
params->sprstat_abandoned_sent = 0;
- retval = 0;
- goto out;
+ return 0;
}
if (policy == SCTP_PR_SCTP_ALL) {
@@ -6990,10 +6907,7 @@ static int sctp_getsockopt_pr_streamstatus(struct sock *sk, int len,
streamoute->abandoned_sent[__SCTP_PR_INDEX(policy)];
}
- retval = 0;
-
-out:
- return retval;
+ return 0;
}
static int sctp_getsockopt_reconfig_supported(struct sock *sk, int len,
@@ -7001,24 +6915,18 @@ static int sctp_getsockopt_reconfig_supported(struct sock *sk, int len,
int *optlen)
{
struct sctp_association *asoc;
- int retval = -EFAULT;
*optlen = sizeof(*params);
asoc = sctp_id2assoc(sk, params->assoc_id);
if (!asoc && params->assoc_id != SCTP_FUTURE_ASSOC &&
- sctp_style(sk, UDP)) {
- retval = -EINVAL;
- goto out;
- }
+ sctp_style(sk, UDP))
+ return -EINVAL;
params->assoc_value = asoc ? asoc->peer.reconf_capable
: sctp_sk(sk)->ep->reconf_enable;
- retval = 0;
-
-out:
- return retval;
+ return 0;
}
static int sctp_getsockopt_enable_strreset(struct sock *sk, int len,
@@ -7026,24 +6934,18 @@ static int sctp_getsockopt_enable_strreset(struct sock *sk, int len,
int *optlen)
{
struct sctp_association *asoc;
- int retval = -EFAULT;
*optlen = sizeof(*params);
asoc = sctp_id2assoc(sk, params->assoc_id);
if (!asoc && params->assoc_id != SCTP_FUTURE_ASSOC &&
- sctp_style(sk, UDP)) {
- retval = -EINVAL;
- goto out;
- }
+ sctp_style(sk, UDP))
+ return -EINVAL;
params->assoc_value = asoc ? asoc->strreset_enable
: sctp_sk(sk)->ep->strreset_enable;
- retval = 0;
-
-out:
- return retval;
+ return 0;
}
static int sctp_getsockopt_scheduler(struct sock *sk, int len,
@@ -7051,24 +6953,18 @@ static int sctp_getsockopt_scheduler(struct sock *sk, int len,
int *optlen)
{
struct sctp_association *asoc;
- int retval = -EFAULT;
*optlen = sizeof(*params);
asoc = sctp_id2assoc(sk, params->assoc_id);
if (!asoc && params->assoc_id != SCTP_FUTURE_ASSOC &&
- sctp_style(sk, UDP)) {
- retval = -EINVAL;
- goto out;
- }
+ sctp_style(sk, UDP))
+ return -EINVAL;
params->assoc_value = asoc ? sctp_sched_get_sched(asoc)
: sctp_sk(sk)->default_ss;
- retval = 0;
-
-out:
- return retval;
+ return 0;
}
static int sctp_getsockopt_scheduler_value(struct sock *sk, int len,
@@ -7076,21 +6972,15 @@ static int sctp_getsockopt_scheduler_value(struct sock *sk, int len,
int *optlen)
{
struct sctp_association *asoc;
- int retval = -EFAULT;
*optlen = sizeof(*params);
asoc = sctp_id2assoc(sk, params->assoc_id);
- if (!asoc) {
- retval = -EINVAL;
- goto out;
- }
+ if (!asoc)
+ return -EINVAL;
- retval = sctp_sched_get_value(asoc, params->stream_id,
+ return sctp_sched_get_value(asoc, params->stream_id,
¶ms->stream_value);
-
-out:
- return retval;
}
static int sctp_getsockopt_interleaving_supported(struct sock *sk, int len,
@@ -7098,24 +6988,18 @@ static int sctp_getsockopt_interleaving_supported(struct sock *sk, int len,
int *optlen)
{
struct sctp_association *asoc;
- int retval = -EFAULT;
*optlen = sizeof(*params);
asoc = sctp_id2assoc(sk, params->assoc_id);
if (!asoc && params->assoc_id != SCTP_FUTURE_ASSOC &&
- sctp_style(sk, UDP)) {
- retval = -EINVAL;
- goto out;
- }
+ sctp_style(sk, UDP))
+ return -EINVAL;
params->assoc_value = asoc ? asoc->peer.intl_capable
: sctp_sk(sk)->ep->intl_enable;
- retval = 0;
-
-out:
- return retval;
+ return 0;
}
static int sctp_getsockopt_reuse_port(struct sock *sk, int len,
@@ -7160,24 +7044,18 @@ static int sctp_getsockopt_asconf_supported(struct sock *sk, int len,
int *optlen)
{
struct sctp_association *asoc;
- int retval = -EFAULT;
*optlen = sizeof(*params);
asoc = sctp_id2assoc(sk, params->assoc_id);
if (!asoc && params->assoc_id != SCTP_FUTURE_ASSOC &&
- sctp_style(sk, UDP)) {
- retval = -EINVAL;
- goto out;
- }
+ sctp_style(sk, UDP))
+ return -EINVAL;
params->assoc_value = asoc ? asoc->peer.asconf_capable
: sctp_sk(sk)->ep->asconf_enable;
- retval = 0;
-
-out:
- return retval;
+ return 0;
}
static int sctp_getsockopt_auth_supported(struct sock *sk, int len,
@@ -7185,24 +7063,18 @@ static int sctp_getsockopt_auth_supported(struct sock *sk, int len,
int *optlen)
{
struct sctp_association *asoc;
- int retval = -EFAULT;
*optlen = sizeof(*params);
asoc = sctp_id2assoc(sk, params->assoc_id);
if (!asoc && params->assoc_id != SCTP_FUTURE_ASSOC &&
- sctp_style(sk, UDP)) {
- retval = -EINVAL;
- goto out;
- }
+ sctp_style(sk, UDP))
+ return -EINVAL;
params->assoc_value = asoc ? asoc->peer.auth_capable
: sctp_sk(sk)->ep->auth_enable;
- retval = 0;
-
-out:
- return retval;
+ return 0;
}
static int sctp_getsockopt_ecn_supported(struct sock *sk, int len,
@@ -7210,24 +7082,18 @@ static int sctp_getsockopt_ecn_supported(struct sock *sk, int len,
int *optlen)
{
struct sctp_association *asoc;
- int retval = -EFAULT;
*optlen = sizeof(*params);
asoc = sctp_id2assoc(sk, params->assoc_id);
if (!asoc && params->assoc_id != SCTP_FUTURE_ASSOC &&
- sctp_style(sk, UDP)) {
- retval = -EINVAL;
- goto out;
- }
+ sctp_style(sk, UDP))
+ return -EINVAL;
params->assoc_value = asoc ? asoc->peer.ecn_capable
: sctp_sk(sk)->ep->ecn_enable;
- retval = 0;
-
-out:
- return retval;
+ return 0;
}
static int sctp_getsockopt_pf_expose(struct sock *sk, int len,
@@ -7235,24 +7101,18 @@ static int sctp_getsockopt_pf_expose(struct sock *sk, int len,
int *optlen)
{
struct sctp_association *asoc;
- int retval = -EFAULT;
*optlen = sizeof(*params);
asoc = sctp_id2assoc(sk, params->assoc_id);
if (!asoc && params->assoc_id != SCTP_FUTURE_ASSOC &&
- sctp_style(sk, UDP)) {
- retval = -EINVAL;
- goto out;
- }
+ sctp_style(sk, UDP))
+ return -EINVAL;
params->assoc_value = asoc ? asoc->pf_expose
: sctp_sk(sk)->pf_expose;
- retval = 0;
-
-out:
- return retval;
+ return 0;
}
static int kernel_sctp_getsockopt(struct sock *sk, int optname, int len,
--
1.8.1.2
-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)
Powered by blists - more mailing lists