pespin submitted this change.

View Change

Approvals: Jenkins Builder: Verified laforge: Looks good to me, but someone else must approve fixeria: Looks good to me, approved
bts: Remove acc timers during talloc destructor

This went unnoticed because so far there's not clear way to free a BTS,
eg. through VTY.

Change-Id: I0f94d8fc775953ee98eebc4d80f825404c4f92b2
---
M include/osmocom/bsc/acc.h
M src/osmo-bsc/acc.c
M src/osmo-bsc/bts.c
M tests/acc/acc_test.c
M tests/gsm0408/gsm0408_test.c
5 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/include/osmocom/bsc/acc.h b/include/osmocom/bsc/acc.h
index 531a69a..5674825 100644
--- a/include/osmocom/bsc/acc.h
+++ b/include/osmocom/bsc/acc.h
@@ -53,6 +53,7 @@
};

void acc_mgr_init(struct acc_mgr *acc_mgr, struct gsm_bts *bts);
+void acc_mgr_deinit(struct acc_mgr *acc_mgr);
uint8_t acc_mgr_get_len_allowed_adm(struct acc_mgr *acc_mgr);
uint8_t acc_mgr_get_len_allowed_ramp(struct acc_mgr *acc_mgr);
void acc_mgr_set_len_allowed_adm(struct acc_mgr *acc_mgr, uint8_t len_allowed_adm);
@@ -164,6 +165,7 @@
void acc_ramp_global_init(void);

void acc_ramp_init(struct acc_ramp *acc_ramp, struct gsm_bts *bts);
+void acc_ramp_deinit(struct acc_ramp *acc_ramp);
int acc_ramp_set_step_size(struct acc_ramp *acc_ramp, unsigned int step_size);
int acc_ramp_set_step_interval(struct acc_ramp *acc_ramp, unsigned int step_interval);
int acc_ramp_set_chan_load_thresholds(struct acc_ramp *acc_ramp, unsigned int low_threshold, unsigned int up_threshold);
diff --git a/src/osmo-bsc/acc.c b/src/osmo-bsc/acc.c
index 80a3576..4b5aba0 100644
--- a/src/osmo-bsc/acc.c
+++ b/src/osmo-bsc/acc.c
@@ -296,6 +296,11 @@
acc_mgr_gen_subset(acc_mgr, false);
}

+void acc_mgr_deinit(struct acc_mgr *acc_mgr)
+{
+ osmo_timer_del(&acc_mgr->rotate_timer);
+}
+
uint8_t acc_mgr_get_len_allowed_adm(struct acc_mgr *acc_mgr)
{
return acc_mgr->len_allowed_adm;
@@ -475,6 +480,17 @@
}

/*!
+ * Deinitialize an acc_ramp data structure.
+ * Called when the user is going to free the structure.
+ *
+ * \param[in] acc_ramp Pointer to acc_ramp structure to be deinitialized.
+ */
+void acc_ramp_deinit(struct acc_ramp *acc_ramp)
+{
+ osmo_timer_del(&acc_ramp->step_timer);
+}
+
+/*!
* Change the ramping step size which controls how many ACCs will be allowed per ramping step.
* Returns negative on error (step_size out of range), else zero.
* \param[in] acc_ramp Pointer to acc_ramp structure.
diff --git a/src/osmo-bsc/bts.c b/src/osmo-bsc/bts.c
index 50a8579..790a8d4 100644
--- a/src/osmo-bsc/bts.c
+++ b/src/osmo-bsc/bts.c
@@ -163,6 +163,9 @@
paging_destructor(bts);
bts_setup_ramp_remove(bts);

+ acc_ramp_deinit(&bts->acc_ramp);
+ acc_mgr_deinit(&bts->acc_mgr);
+
osmo_timer_del(&bts->cbch_timer);

bts->site_mgr->bts[0] = NULL;
diff --git a/tests/acc/acc_test.c b/tests/acc/acc_test.c
index 3dcdc1b..84a63b0 100644
--- a/tests/acc/acc_test.c
+++ b/tests/acc/acc_test.c
@@ -58,8 +58,6 @@
#define bts_del(bts) _bts_del(bts, __func__)
static inline void _bts_del(struct gsm_bts *bts, const char *msg)
{
- osmo_timer_del(&bts->acc_mgr.rotate_timer);
- osmo_timer_del(&bts->acc_ramp.step_timer);
talloc_free(bts->site_mgr);
fprintf(stderr, "BTS deallocated OK in %s()\n", msg);
}
diff --git a/tests/gsm0408/gsm0408_test.c b/tests/gsm0408/gsm0408_test.c
index b35df60..4f4b4d4 100644
--- a/tests/gsm0408/gsm0408_test.c
+++ b/tests/gsm0408/gsm0408_test.c
@@ -137,7 +137,6 @@
#define bts_del(bts) _bts_del(bts, __func__)
static inline void _bts_del(struct gsm_bts *bts, const char *msg)
{
- osmo_timer_del(&bts->acc_mgr.rotate_timer);
talloc_free(bts->site_mgr);
printf("BTS deallocated OK in %s()\n", msg);
}

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

Gerrit-MessageType: merged
Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: I0f94d8fc775953ee98eebc4d80f825404c4f92b2
Gerrit-Change-Number: 38084
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin@sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de>
Gerrit-Reviewer: laforge <laforge@osmocom.org>
Gerrit-Reviewer: pespin <pespin@sysmocom.de>