diff options
author | Pau Espin Pedrol <pespin@sysmocom.de> | 2022-04-25 18:41:07 +0200 |
---|---|---|
committer | pespin <pespin@sysmocom.de> | 2022-04-27 10:03:01 +0000 |
commit | 0bcd47f014dee60d9833585a781ff3893768ca7a (patch) | |
tree | 230957d0baf6f1bd091d0bd74bc6d2e074877931 | |
parent | c3487dd19d763130633a46803c18324940009ca4 (diff) |
bts: Make sure paging timers are deleted when struct gsm_bts is freed
Change-Id: If8dffc948a3a9d8bdd9237f644e7f10f41c64853
-rw-r--r-- | include/osmocom/bsc/paging.h | 1 | ||||
-rw-r--r-- | src/osmo-bsc/bts.c | 2 | ||||
-rw-r--r-- | src/osmo-bsc/paging.c | 7 |
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) { |