pespin has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/osmo-bsc/+/38083?usp=email )


Change subject: bts: Remove from net->bts_list during talloc destructor
......................................................................

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 https://gerrit.osmocom.org/c/osmo-bsc/+/38083?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings?usp=email

Gerrit-MessageType: newchange
Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: I2bb1d51541c79e417c0359830e9f095be4669867
Gerrit-Change-Number: 38083
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <[email protected]>

Reply via email to