aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2010-06-28 22:18:26 +0200
committerHarald Welte <laforge@gnumonks.org>2010-06-28 22:18:26 +0200
commitf7fef48e1bb0fafb1a9ef4e63eee3602c9db3826 (patch)
tree3cff0077852b0e23d149788c9aab28eb9d338305 /openbsc
parentc0d59504b48fc3896082a12fbebd7102ecb87094 (diff)
[SGSN] LLC: properly free LLC entities at TLLI unassignment
Diffstat (limited to 'openbsc')
-rw-r--r--openbsc/src/gprs/gprs_llc.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/openbsc/src/gprs/gprs_llc.c b/openbsc/src/gprs/gprs_llc.c
index edb428583..f45bd325c 100644
--- a/openbsc/src/gprs/gprs_llc.c
+++ b/openbsc/src/gprs/gprs_llc.c
@@ -151,6 +151,12 @@ static struct gprs_llc_llme *llme_alloc(uint32_t tlli)
return llme;
}
+static void llme_free(struct gprs_llc_llme *llme)
+{
+ llist_del(&llme->list);
+ talloc_free(llme);
+}
+
enum gprs_llc_cmd {
GPRS_LLC_NULL,
GPRS_LLC_RR,
@@ -732,6 +738,7 @@ int gprs_llgmm_assign(struct gprs_llc_llme *llme,
struct gprs_llc_lle *l = &llme->lle[i];
l->state = GPRS_LLES_UNASSIGNED;
}
+ llme_free(llme);
} else
return -EINVAL;