pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-bsc/+/30299 )
Change subject: paging: paging: Drop unneeded extra param in paging_remove_request() ......................................................................
paging: paging: Drop unneeded extra param in paging_remove_request()
The BTS can be obtained easily from the backpointer in req->bts. Having the extra param can only lead to confusion and introduction of bugs, as happened in bug fixed by Change-Id I8c6828f86b7ccbb2c4a09ca1aec859a2c597b679.
Related: SYS#6200 Change-Id: I545fd853fdffce7f23f0d99203c66c3b39144e4b --- M src/osmo-bsc/paging.c 1 file changed, 18 insertions(+), 15 deletions(-)
Approvals: Jenkins Builder: Verified fixeria: Looks good to me, but someone else must approve osmith: Looks good to me, approved
diff --git a/src/osmo-bsc/paging.c b/src/osmo-bsc/paging.c index b9f2e54..0395c14 100644 --- a/src/osmo-bsc/paging.c +++ b/src/osmo-bsc/paging.c @@ -83,17 +83,20 @@ /* * Kill one paging request update the internal list... */ -static void paging_remove_request(struct gsm_bts_paging_state *paging_bts, - struct gsm_paging_request *to_be_deleted) +static void paging_remove_request(struct gsm_paging_request *req) { - osmo_timer_del(&to_be_deleted->T3113); - llist_del(&to_be_deleted->entry); - paging_bts->pending_requests_len--; - osmo_stat_item_dec(osmo_stat_item_group_get_item(to_be_deleted->bts->bts_statg, BTS_STAT_PAGING_REQ_QUEUE_LENGTH), 1); - bsc_subscr_remove_active_paging_request(to_be_deleted->bsub, to_be_deleted); - talloc_free(to_be_deleted); - if (llist_empty(&paging_bts->pending_requests)) - osmo_timer_del(&paging_bts->work_timer); + struct gsm_bts *bts = req->bts; + struct gsm_bts_paging_state *bts_pag_st = &bts->paging; + + osmo_timer_del(&req->T3113); + llist_del(&req->entry); + bts_pag_st->pending_requests_len--; + osmo_stat_item_dec(osmo_stat_item_group_get_item(bts->bts_statg, BTS_STAT_PAGING_REQ_QUEUE_LENGTH), 1); + bsc_subscr_remove_active_paging_request(req->bsub, req); + talloc_free(req); + + if (llist_empty(&bts_pag_st->pending_requests)) + osmo_timer_del(&bts_pag_st->work_timer); }
static void page_ms(struct gsm_paging_request *request) @@ -342,7 +345,7 @@ rate_ctr_inc(rate_ctr_group_get_ctr(bsc_gsmnet->bsc_ctrs, BSC_CTR_PAGING_EXPIRED));
/* destroy it now. Do not access req afterwards */ - paging_remove_request(&req->bts->paging, req); + paging_remove_request(req);
log_set_context(LOG_CTX_BSC_SUBSCR, NULL); } @@ -559,7 +562,7 @@ LOG_PAGING_BTS(req, bts, DPAG, LOGL_DEBUG, "Stop paging\n"); rate_ctr_inc(rate_ctr_group_get_ctr(bts->bts_ctrs, BTS_CTR_PAGING_RESPONDED)); rate_ctr_inc(rate_ctr_group_get_ctr(bts->network->bsc_ctrs, BSC_CTR_PAGING_RESPONDED)); - paging_remove_request(&bts->paging, req); + paging_remove_request(req); remaining--; }
@@ -575,7 +578,7 @@ * pending on a different BTS. But why not return an MSC when we found one. */ paged_from_msc = req->msc; } - paging_remove_request(&req->bts->paging, req); + paging_remove_request(req); remaining--; }
@@ -604,7 +607,7 @@ continue; } /* No reason to keep the paging, remove it: */ - paging_remove_request(&req->bts->paging, req); + paging_remove_request(req); remaining--; if (remaining == 0) break; @@ -642,7 +645,7 @@ continue; /* now give up the data structure */ LOG_PAGING_BTS(req, bts, DPAG, LOGL_DEBUG, "Stop paging (flush)\n"); - paging_remove_request(&bts->paging, req); + paging_remove_request(req); num_cancelled++; }