From: Xin Long lucien.xin@gmail.com
[ Upstream commit f794dc2304d83ab998c2eee5bab0549aff5c53a2 ]
This issue causes SCTP_PEER_ADDR_THLDS sockopt not to be able to dump a transport thresholds info.
Fix it by adding 'goto' put_user in sctp_getsockopt_paddr_thresholds.
Fixes: 8add543e369d ("sctp: add SCTP_FUTURE_ASSOC for SCTP_PEER_ADDR_THLDS sockopt") Signed-off-by: Xin Long lucien.xin@gmail.com Acked-by: Marcelo Ricardo Leitner marcelo.leitner@gmail.com Acked-by: Neil Horman nhorman@tuxdriver.com Signed-off-by: David S. Miller davem@davemloft.net Signed-off-by: Greg Kroah-Hartman gregkh@linuxfoundation.org --- net/sctp/socket.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
--- a/net/sctp/socket.c +++ b/net/sctp/socket.c @@ -7176,7 +7176,7 @@ static int sctp_getsockopt_paddr_thresho val.spt_pathmaxrxt = trans->pathmaxrxt; val.spt_pathpfthld = trans->pf_retrans;
- return 0; + goto out; }
asoc = sctp_id2assoc(sk, val.spt_assoc_id); @@ -7194,6 +7194,7 @@ static int sctp_getsockopt_paddr_thresho val.spt_pathmaxrxt = sp->pathmaxrxt; }
+out: if (put_user(len, optlen) || copy_to_user(optval, &val, len)) return -EFAULT;