lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:   Wed, 14 Jun 2017 16:08:59 -0300
From:   Marcelo Ricardo Leitner <marcelo.leitner@...il.com>
To:     netdev@...r.kernel.org
Cc:     Vlad Yasevich <vyasevich@...il.com>,
        Neil Horman <nhorman@...driver.com>, linux-sctp@...r.kernel.org
Subject: [PATCH net] sctp: fix spinfo_srtt to be in msecs and not jiffies

RFC 6458 (SCTP Sockets API) Section 8.2.2.  Peer Address Information
(SCTP_GET_PEER_ADDR_INFO) defines that spinfo_srtt is in miliseconds,
yet we were using it in jiffies.

Fix it by converting before assigning, similarly to RTO.

Signed-off-by: Marcelo Ricardo Leitner <marcelo.leitner@...il.com>
---
I hope this is not considered UAPI breakage. This is exported via
getsockopt() calls.

 net/sctp/socket.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/net/sctp/socket.c b/net/sctp/socket.c
index 5f58dd03e3ace38b9c4babbe2d92f0a3f98a4b68..e51eacbf9ec8248661e41c5c12578b6b8b75487d 100644
--- a/net/sctp/socket.c
+++ b/net/sctp/socket.c
@@ -4542,7 +4542,7 @@ int sctp_get_sctp_info(struct sock *sk, struct sctp_association *asoc,
 	       sizeof(struct sockaddr_storage));
 	info->sctpi_p_state = prim->state;
 	info->sctpi_p_cwnd = prim->cwnd;
-	info->sctpi_p_srtt = prim->srtt;
+	info->sctpi_p_srtt = jiffies_to_msecs(prim->srtt);
 	info->sctpi_p_rto = jiffies_to_msecs(prim->rto);
 	info->sctpi_p_hbinterval = prim->hbinterval;
 	info->sctpi_p_pathmaxrxt = prim->pathmaxrxt;
@@ -4738,7 +4738,7 @@ static int sctp_getsockopt_sctp_status(struct sock *sk, int len,
 		(union sctp_addr *)&status.sstat_primary.spinfo_address);
 	status.sstat_primary.spinfo_state = transport->state;
 	status.sstat_primary.spinfo_cwnd = transport->cwnd;
-	status.sstat_primary.spinfo_srtt = transport->srtt;
+	status.sstat_primary.spinfo_srtt = jiffies_to_msecs(transport->srtt);
 	status.sstat_primary.spinfo_rto = jiffies_to_msecs(transport->rto);
 	status.sstat_primary.spinfo_mtu = transport->pathmtu;
 
@@ -4798,7 +4798,7 @@ static int sctp_getsockopt_peer_addr_info(struct sock *sk, int len,
 	pinfo.spinfo_assoc_id = sctp_assoc2id(transport->asoc);
 	pinfo.spinfo_state = transport->state;
 	pinfo.spinfo_cwnd = transport->cwnd;
-	pinfo.spinfo_srtt = transport->srtt;
+	pinfo.spinfo_srtt = jiffies_to_msecs(transport->srtt);
 	pinfo.spinfo_rto = jiffies_to_msecs(transport->rto);
 	pinfo.spinfo_mtu = transport->pathmtu;
 
-- 
2.9.4

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ