Message ID | 20220218153259.GA4392@kili (mailing list archive) |
---|---|
State | Accepted |
Commit | 7a11455f376de8a4357af4a20ae68fefe29b8ceb |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net-next] net/smc: unlock on error paths in __smc_setsockopt() | expand |
在 2022/2/18 下午11:32, Dan Carpenter 写道: > These two error paths need to release_sock(sk) before returning. > > Fixes: a6a6fe27bab4 ("net/smc: Dynamic control handshake limitation by socket options") > Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> > --- > net/smc/af_smc.c | 12 ++++++++---- > 1 file changed, 8 insertions(+), 4 deletions(-) > > diff --git a/net/smc/af_smc.c b/net/smc/af_smc.c > index d873afe2d4dc..38faf2b60327 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; My mistake... thanks for your fixes. Reviewed-by: D. Wythe <alibuda@linux.alibaba.com>
Hello: This patch was applied to netdev/net-next.git (master) by David S. Miller <davem@davemloft.net>: On Fri, 18 Feb 2022 18:32:59 +0300 you wrote: > These two error paths need to release_sock(sk) before returning. > > Fixes: a6a6fe27bab4 ("net/smc: Dynamic control handshake limitation by socket options") > Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> > --- > net/smc/af_smc.c | 12 ++++++++---- > 1 file changed, 8 insertions(+), 4 deletions(-) Here is the summary with links: - [net-next] net/smc: unlock on error paths in __smc_setsockopt() https://git.kernel.org/netdev/net-next/c/7a11455f376d You are awesome, thank you!
diff --git a/net/smc/af_smc.c b/net/smc/af_smc.c index d873afe2d4dc..38faf2b60327 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;
These two error paths need to release_sock(sk) before returning. Fixes: a6a6fe27bab4 ("net/smc: Dynamic control handshake limitation by socket options") Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> --- net/smc/af_smc.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-)