dexter has uploaded this change for review. (
https://gerrit.osmocom.org/c/osmo-bsc/+/31673 )
Change subject: pcu_sock: get rid of leaking message buffer
......................................................................
pcu_sock: get rid of leaking message buffer
When a data request is received from the PCU, some of the switch cases
allocate a message buffer but the message buffer is only used to pass
its data and length to other functions. The message buffer itself is not
passed anywhere and it is also not freed. Lets get rid of the message
buffer and avoid unnecessary memcopy calls.
Related: OS#5198
Change-Id: Ibfaae177585a4d42d797b6bbd90e402641620140
---
M src/osmo-bsc/pcu_sock.c
1 file changed, 19 insertions(+), 23 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/73/31673/1
diff --git a/src/osmo-bsc/pcu_sock.c b/src/osmo-bsc/pcu_sock.c
index 3d8c254..fa4193f 100644
--- a/src/osmo-bsc/pcu_sock.c
+++ b/src/osmo-bsc/pcu_sock.c
@@ -532,7 +532,6 @@
static int pcu_rx_data_req(struct gsm_bts *bts, uint8_t msg_type,
struct gsm_pcu_if_data *data_req)
{
- struct msgb *msg;
uint32_t tlli = -1;
uint8_t pag_grp;
int rc = 0;
@@ -549,18 +548,8 @@
pcu_rx_rr_paging(bts, pag_grp, data_req->data+3);
break;
case PCU_IF_SAPI_AGCH:
- msg = msgb_alloc(data_req->len, "pcu_agch");
- if (!msg) {
- rc = -ENOMEM;
- break;
- }
- msg->l3h = msgb_put(msg, data_req->len);
- memcpy(msg->l3h, data_req->data, data_req->len);
-
- if (rsl_imm_assign_cmd(bts, msg->len, msg->data)) {
- msgb_free(msg);
+ if (rsl_imm_assign_cmd(bts, data_req->len, data_req->data))
rc = -EIO;
- }
break;
case PCU_IF_SAPI_PCH_DT:
/* DT = direct TLLI. A tlli is prefixed so that the BSC/BTS can confirm the sending of
the downlink
@@ -580,29 +569,20 @@
LOGP(DPCU, LOGL_DEBUG, "PCU Sends immediate assignment via PCH (tlli=0x%08x,
pag_grp=0x%02x)\n",
tlli, pag_grp);
- msg = msgb_alloc(data_req->len - 7, "pcu_pch");
- if (!msg) {
- rc = -ENOMEM;
- break;
- }
- msg->l3h = msgb_put(msg, data_req->len - 7);
- memcpy(msg->l3h, data_req->data + 7, data_req->len - 7);
/* NOTE: Sending an IMMEDIATE ASSIGNMENT via PCH became necessary with GPRS in order to
be able to
* assign downlink TBFs directly through the paging channel. However, this method never
became part
* of the RSL specs. This means that each BTS vendor has to come up with a proprietary
method. At
* the moment we only support Ericsson RBS here. */
if (bts->type == GSM_BTS_TYPE_RBS2000) {
- rc = rsl_ericsson_imm_assign_cmd(bts, tlli, msg->len, msg->data, pag_grp);
+ rc = rsl_ericsson_imm_assign_cmd(bts, tlli, data_req->len - 7, data_req->data +
7, pag_grp);
} else {
LOGP(DPCU, LOGL_ERROR, "BTS model does not support sending immediate assignment
via PCH!\n");
rc = -ENOTSUP;
}
- if (rc) {
- msgb_free(msg);
+ if (rc)
rc = -EIO;
- }
break;
default:
LOGP(DPCU, LOGL_ERROR, "Received PCU data request with "
--
To view, visit
https://gerrit.osmocom.org/c/osmo-bsc/+/31673
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: Ibfaae177585a4d42d797b6bbd90e402641620140
Gerrit-Change-Number: 31673
Gerrit-PatchSet: 1
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-MessageType: newchange