neels has uploaded this change for review.

View Change

hodec2: apply penalty_low_rxqual_as only on assignment

The penalty timer low_rxqual_as() is only supposed to apply on an
intra-cell re-assignment. However, a segfault has been reported that
apparently applies it to inter-BSC handover.

Make sure that this timer applies only to re-assignment. In effect this
makes sure that the target bts is non-NULL and avoids the segfault.

Related: OS#5525
Change-Id: Ifdb9891fbe7e3f3423a96371def4fcbf2fc0bc0d
---
M src/osmo-bsc/handover_decision_2.c
1 file changed, 2 insertions(+), 1 deletion(-)

git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/59/27759/1
diff --git a/src/osmo-bsc/handover_decision_2.c b/src/osmo-bsc/handover_decision_2.c
index 8627910..c88e846 100644
--- a/src/osmo-bsc/handover_decision_2.c
+++ b/src/osmo-bsc/handover_decision_2.c
@@ -1448,7 +1448,8 @@

/* After upgrading TCH/H to TCH/F due to bad RxQual, start penalty timer to avoid re-assignment within
* the same cell again, to avoid oscillation from RxQual noise combined with congestion resolution. */
- if (!rc && is_upgrade_to_tchf(best_cand, REQUIREMENT_A_MASK)) {
+ if (!rc && best_cand->target.bts == best_cand->current.bts
+ && is_upgrade_to_tchf(best_cand, REQUIREMENT_A_MASK)) {
struct gsm0808_cell_id bts_id;
gsm_bts_cell_id(&bts_id, best_cand->target.bts);
penalty_timers_add(lchan->conn, &lchan->conn->hodec2.penalty_timers, &bts_id,

To view, visit change 27759. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: Ifdb9891fbe7e3f3423a96371def4fcbf2fc0bc0d
Gerrit-Change-Number: 27759
Gerrit-PatchSet: 1
Gerrit-Owner: neels <nhofmeyr@sysmocom.de>
Gerrit-MessageType: newchange