Holger Freyther has submitted this change and it was merged.
Change subject: sgsn_mm_ctx_cleanup_free(): clean up LLME iff present (Gb, not Iu)
......................................................................
sgsn_mm_ctx_cleanup_free(): clean up LLME iff present (Gb, not Iu)
Assert that llme is unused for non-Gb (Iu) connections, and clean up otherwise.
Make sure the cleanup is left below the sgsn_mm_ctx_free() call, as the comment
states.
Change-Id: I891ae21afc1f4f60580b822273b5435e0e17d46f
---
M openbsc/src/gprs/gprs_sgsn.c
1 file changed, 10 insertions(+), 3 deletions(-)
Approvals:
Harald Welte: Looks good to me, approved
Jenkins Builder: Verified
diff --git a/openbsc/src/gprs/gprs_sgsn.c b/openbsc/src/gprs/gprs_sgsn.c
index 8bb6850..722edec 100644
--- a/openbsc/src/gprs/gprs_sgsn.c
+++ b/openbsc/src/gprs/gprs_sgsn.c
@@ -197,10 +197,15 @@
void sgsn_mm_ctx_cleanup_free(struct sgsn_mm_ctx *mm)
{
- struct gprs_llc_llme *llme = mm->gb.llme;
+ struct gprs_llc_llme *llme = NULL;
uint32_t tlli = mm->gb.tlli;
struct sgsn_pdp_ctx *pdp, *pdp2;
struct sgsn_signal_data sig_data;
+
+ if (mm->ran_type == MM_CTX_T_GERAN_Gb)
+ llme = mm->gb.llme;
+ else
+ OSMO_ASSERT(mm->gb.llme == NULL);
/* Forget about ongoing look-ups */
if (mm->ggsn_lookup) {
@@ -237,8 +242,10 @@
sgsn_mm_ctx_free(mm);
mm = NULL;
- /* TLLI unassignment, must be called after sgsn_mm_ctx_free */
- gprs_llgmm_assign(llme, tlli, 0xffffffff, GPRS_ALGO_GEA0, NULL);
+ if (llme) {
+ /* TLLI unassignment, must be called after sgsn_mm_ctx_free */
+ gprs_llgmm_assign(llme, tlli, 0xffffffff, GPRS_ALGO_GEA0, NULL);
+ }
}
--
To view, visit
https://gerrit.osmocom.org/174
To unsubscribe, visit
https://gerrit.osmocom.org/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I891ae21afc1f4f60580b822273b5435e0e17d46f
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Neels Hofmeyr <nhofmeyr(a)sysmocom.de>
Gerrit-Reviewer: Harald Welte <laforge(a)gnumonks.org>
Gerrit-Reviewer: Holger Freyther <holger(a)freyther.de>
Gerrit-Reviewer: Jenkins Builder