aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2022-04-25 18:41:07 +0200
committerpespin <pespin@sysmocom.de>2022-04-27 10:03:01 +0000
commit0bcd47f014dee60d9833585a781ff3893768ca7a (patch)
tree230957d0baf6f1bd091d0bd74bc6d2e074877931
parentc3487dd19d763130633a46803c18324940009ca4 (diff)
bts: Make sure paging timers are deleted when struct gsm_bts is freed
-rw-r--r--include/osmocom/bsc/paging.h1
-rw-r--r--src/osmo-bsc/bts.c2
-rw-r--r--src/osmo-bsc/paging.c7
3 files changed, 10 insertions, 0 deletions
diff --git a/include/osmocom/bsc/paging.h b/include/osmocom/bsc/paging.h
index c4381fac0..593529d5f 100644
--- a/include/osmocom/bsc/paging.h
+++ b/include/osmocom/bsc/paging.h
@@ -110,6 +110,7 @@ struct gsm_bts_paging_state {
};
void paging_init(struct gsm_bts *bts);
+void paging_destructor(struct gsm_bts *bts);
/* schedule paging request */
int paging_request_bts(const struct bsc_paging_params *params, struct gsm_bts *bts);
diff --git a/src/osmo-bsc/bts.c b/src/osmo-bsc/bts.c
index 4e65e51b2..a403c820a 100644
--- a/src/osmo-bsc/bts.c
+++ b/src/osmo-bsc/bts.c
@@ -149,6 +149,8 @@ static const struct gprs_rlc_cfg rlc_cfg_default = {
static int gsm_bts_talloc_destructor(struct gsm_bts *bts)
{
+ paging_destructor(bts);
+
bts->site_mgr->bts[0] = NULL;
if (bts->gprs.cell.mo.fi) {
diff --git a/src/osmo-bsc/paging.c b/src/osmo-bsc/paging.c
index 327547344..c0649da36 100644
--- a/src/osmo-bsc/paging.c
+++ b/src/osmo-bsc/paging.c
@@ -266,6 +266,13 @@ void paging_init(struct gsm_bts *bts)
osmo_timer_setup(&bts->paging.credit_timer, paging_give_credit, &bts->paging);
}
+/* Called upon the bts struct being freed */
+void paging_destructor(struct gsm_bts *bts)
+{
+ osmo_timer_del(&bts->paging.credit_timer);
+ osmo_timer_del(&bts->paging.work_timer);
+}
+
/*! Call-back once T3113 (paging timeout) expires for given paging_request */
static void paging_T3113_expired(void *data)
{