Change in osmo-bts[master]: common/rsl.c: fix unaligned pointers in rsl_add_rtp_stats()

Vadim Yanitskiy gerrit-no-reply at lists.osmocom.org
Wed Apr 24 07:34:38 UTC 2019


Vadim Yanitskiy has uploaded this change for review. ( https://gerrit.osmocom.org/13768


Change subject: common/rsl.c: fix unaligned pointers in rsl_add_rtp_stats()
......................................................................

common/rsl.c: fix unaligned pointers in rsl_add_rtp_stats()

Found using clang-8:

  rsl.c:1646:7: warning: taking address of packed member 'packets_sent'
		of class or structure 'ipa_stats' may result in an
		unaligned pointer value
  rsl.c:1646:28: warning: taking address of packed member 'octets_sent'
		 of class or structure 'ipa_stats' may result in an
		 unaligned pointer value
  rsl.c:1647:7: warning: taking address of packed member 'packets_recv'
		of class or structure 'ipa_stats' may result in an
		unaligned pointer value
  rsl.c:1647:28: warning: taking address of packed member 'octets_recv'
		 of class or structure 'ipa_stats' may result in an
		 unaligned pointer value
  rsl.c:1648:7: warning: taking address of packed member 'packets_lost'
		of class or structure 'ipa_stats' may result in an
		unaligned pointer value
  rsl.c:1648:28: warning: taking address of packed member 'arrival_jitter'
		 of class or structure 'ipa_stats' may result in an
		 unaligned pointer value

Change-Id: Ifba33cfd8edeccc99a21c7d076db7119c29d4f40
---
M src/common/rsl.c
1 file changed, 23 insertions(+), 23 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/68/13768/1

diff --git a/src/common/rsl.c b/src/common/rsl.c
index 8f5d689..c2a7db6 100644
--- a/src/common/rsl.c
+++ b/src/common/rsl.c
@@ -1627,33 +1627,33 @@
  */
 static void rsl_add_rtp_stats(struct gsm_lchan *lchan, struct msgb *msg)
 {
-	struct ipa_stats {
-		uint32_t packets_sent;
-		uint32_t octets_sent;
-		uint32_t packets_recv;
-		uint32_t octets_recv;
-		uint32_t packets_lost;
-		uint32_t arrival_jitter;
-		uint32_t avg_tx_delay;
-	} __attribute__((packed));
+	uint32_t packets_sent, octets_sent;
+	uint32_t packets_recv, octets_recv;
+	uint32_t packets_lost;
+	uint32_t arrival_jitter;
 
-	struct ipa_stats stats;
+	msgb_tv_put(msg, RSL_IE_IPAC_CONN_STAT, sizeof(uint32_t) * 7);
 
-	memset(&stats, 0, sizeof(stats));
-
-	if (lchan->abis_ip.rtp_socket)
+	if (lchan->abis_ip.rtp_socket) {
 		osmo_rtp_socket_stats(lchan->abis_ip.rtp_socket,
-					&stats.packets_sent, &stats.octets_sent,
-					&stats.packets_recv, &stats.octets_recv,
-					&stats.packets_lost, &stats.arrival_jitter);
-	/* convert to network byte order */
-	stats.packets_sent = htonl(stats.packets_sent);
-	stats.octets_sent = htonl(stats.octets_sent);
-	stats.packets_recv = htonl(stats.packets_recv);
-	stats.octets_recv = htonl(stats.octets_recv);
-	stats.packets_lost = htonl(stats.packets_lost);
+				      &packets_sent, &octets_sent,
+				      &packets_recv, &octets_recv,
+				      &packets_lost, &arrival_jitter);
 
-	msgb_tlv_put(msg, RSL_IE_IPAC_CONN_STAT, sizeof(stats), (uint8_t *) &stats);
+		/* msgb_put_u32() uses osmo_store32be(),
+		 * so we don't need to call htonl(). */
+		msgb_put_u32(msg, packets_sent);
+		msgb_put_u32(msg, octets_sent);
+		msgb_put_u32(msg, packets_recv);
+		msgb_put_u32(msg, octets_recv);
+		msgb_put_u32(msg, packets_lost);
+		msgb_put_u32(msg, arrival_jitter);
+		/* FIXME: AVG Tx delay is always 0 */
+		msgb_put_u32(msg, 0);
+	} else {
+		msgb_put(msg, sizeof(uint32_t) * 7);
+		memset(msg->tail, 0x00, sizeof(uint32_t) * 7);
+	}
 }
 
 int rsl_tx_ipac_dlcx_ind(struct gsm_lchan *lchan, uint8_t cause)

-- 
To view, visit https://gerrit.osmocom.org/13768
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ifba33cfd8edeccc99a21c7d076db7119c29d4f40
Gerrit-Change-Number: 13768
Gerrit-PatchSet: 1
Gerrit-Owner: Vadim Yanitskiy <axilirator at gmail.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20190424/92e37c41/attachment.html>


More information about the gerrit-log mailing list