diff --git a/net/smc/af_smc.c b/net/smc/af_smc.c index b40ae4d28cbf..30acc31b2c45 100644 --- a/net/smc/af_smc.c +++ b/net/smc/af_smc.c @@ -2715,10 +2715,14 @@ static int __smc_setsockopt(struct socket *sock, int level, int optname, lock_sock(sk); switch (optname) { case SMC_LIMIT_HS: - if (optlen < sizeof(int)) - return -EINVAL; - if (copy_from_sockptr(&val, optval, sizeof(int))) - return -EFAULT; + if (optlen < sizeof(int)) { + rc = -EINVAL; + break; + } + if (copy_from_sockptr(&val, optval, sizeof(int))) { + rc = -EFAULT; + break; + } smc->limit_smc_hs = !!val; rc = 0;