pespin has uploaded this change for review.

View Change

bts: Remove from net->bts_list during talloc destructor

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

Change-Id: I2bb1d51541c79e417c0359830e9f095be4669867
---
M src/osmo-bsc/bts.c
M src/osmo-bsc/gsm_data.c
M tests/acc/acc_test.c
M tests/gsm0408/gsm0408_test.c
M tests/paging/paging_test.c
5 files changed, 5 insertions(+), 7 deletions(-)

git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/83/38083/1
diff --git a/src/osmo-bsc/bts.c b/src/osmo-bsc/bts.c
index 0d33427..50a8579 100644
--- a/src/osmo-bsc/bts.c
+++ b/src/osmo-bsc/bts.c
@@ -158,6 +158,8 @@
{
/* Entries in bts->loc_list are freed by talloc recursively, no need to free them here. */

+ llist_del(&bts->list);
+
paging_destructor(bts);
bts_setup_ramp_remove(bts);

@@ -193,6 +195,9 @@

talloc_set_destructor(bts, gsm_bts_talloc_destructor);

+ llist_add_tail(&bts->list, &net->bts_list);
+ net->num_bts++;
+
bts->nr = bts_num;
bts->num_trx = 0;
INIT_LLIST_HEAD(&bts->trx_list);
diff --git a/src/osmo-bsc/gsm_data.c b/src/osmo-bsc/gsm_data.c
index 87e3893..d5c74ad 100644
--- a/src/osmo-bsc/gsm_data.c
+++ b/src/osmo-bsc/gsm_data.c
@@ -96,14 +96,10 @@
return NULL;
bts = bts_sm->bts[0];

- net->num_bts++;
-
bts->type = type;
gsm_set_bts_model(bts, model);
bts->bsic = bsic;

- llist_add_tail(&bts->list, &net->bts_list);
-
return bts;
}

diff --git a/tests/acc/acc_test.c b/tests/acc/acc_test.c
index 887e891..3dcdc1b 100644
--- a/tests/acc/acc_test.c
+++ b/tests/acc/acc_test.c
@@ -60,7 +60,6 @@
{
osmo_timer_del(&bts->acc_mgr.rotate_timer);
osmo_timer_del(&bts->acc_ramp.step_timer);
- /* no need to llist_del(&bts->list), we never registered the bts there. */
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 a39f8c2..b35df60 100644
--- a/tests/gsm0408/gsm0408_test.c
+++ b/tests/gsm0408/gsm0408_test.c
@@ -138,7 +138,6 @@
static inline void _bts_del(struct gsm_bts *bts, const char *msg)
{
osmo_timer_del(&bts->acc_mgr.rotate_timer);
- /* no need to llist_del(&bts->list), we never registered the bts there. */
talloc_free(bts->site_mgr);
printf("BTS deallocated OK in %s()\n", msg);
}
diff --git a/tests/paging/paging_test.c b/tests/paging/paging_test.c
index 80aaee1..dae3499 100644
--- a/tests/paging/paging_test.c
+++ b/tests/paging/paging_test.c
@@ -97,7 +97,6 @@
#define bts_del(bts) _bts_del(bts, __func__)
static inline void _bts_del(struct gsm_bts *bts, const char *msg)
{
- /* no need to llist_del(&bts->list), we never registered the bts there. */
talloc_free(bts->site_mgr);
fprintf(stderr, "BTS deallocated OK in %s()\n", msg);
}

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

Gerrit-MessageType: newchange
Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: I2bb1d51541c79e417c0359830e9f095be4669867
Gerrit-Change-Number: 38083
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin@sysmocom.de>