neels has submitted this change. ( https://gerrit.osmocom.org/c/osmo-hnbgw/+/32913 )
(
1 is the latest approved patch-set. No files were changed between the latest approved patch-set and the submitted one. )Change subject: unbloat: drop context_map_check_released() ......................................................................
unbloat: drop context_map_check_released()
When I implemented it, I thought context_map_check_released() would help clarify context map deallocation, but instead it just bloats. Simplify and tweak related comment.
Change-Id: I535780de0d3b09893ba89d66804e5e36b26db049 --- M include/osmocom/hnbgw/context_map.h M src/osmo-hnbgw/context_map.c M src/osmo-hnbgw/context_map_rua.c M src/osmo-hnbgw/context_map_sccp.c 4 files changed, 22 insertions(+), 18 deletions(-)
Approvals: pespin: Looks good to me, but someone else must approve laforge: Looks good to me, approved Jenkins Builder: Verified
diff --git a/include/osmocom/hnbgw/context_map.h b/include/osmocom/hnbgw/context_map.h index 2b60958..a2e76c3 100644 --- a/include/osmocom/hnbgw/context_map.h +++ b/include/osmocom/hnbgw/context_map.h @@ -156,6 +156,6 @@
bool map_rua_is_active(struct hnbgw_context_map *map); bool map_sccp_is_active(struct hnbgw_context_map *map); -void context_map_check_released(struct hnbgw_context_map *map); +void context_map_free(struct hnbgw_context_map *map);
unsigned int msg_has_l2_data(const struct msgb *msg); diff --git a/src/osmo-hnbgw/context_map.c b/src/osmo-hnbgw/context_map.c index c9507be..f610087 100644 --- a/src/osmo-hnbgw/context_map.c +++ b/src/osmo-hnbgw/context_map.c @@ -247,12 +247,3 @@ LOG_MAP(map, DMAIN, LOGL_INFO, "Deallocating\n"); talloc_free(map); } - -void context_map_check_released(struct hnbgw_context_map *map) -{ - if (map_rua_is_active(map) || map_sccp_is_active(map)) { - /* still active, do not release yet. */ - return; - } - context_map_free(map); -} diff --git a/src/osmo-hnbgw/context_map_rua.c b/src/osmo-hnbgw/context_map_rua.c index 5a715c4..f50f711 100644 --- a/src/osmo-hnbgw/context_map_rua.c +++ b/src/osmo-hnbgw/context_map_rua.c @@ -294,13 +294,13 @@ static void map_rua_disconnected_onenter(struct osmo_fsm_inst *fi, uint32_t prev_state) { struct hnbgw_context_map *map = fi->priv; - /* For sanity, always tell SCCP to disconnect, if it hasn't done so. Dispatching MAP_SCCP_EV_RAN_DISC may send - * SCCP into MAP_RUA_ST_DISCONNECTED, which calls context_map_check_released() and frees the hnbgw_context_map, - * so don't free it a second time. If SCCP stays active, calling context_map_check_released() has no effect. */ + /* From RUA's POV, we can now free the hnbgw_context_map. + * If SCCP is still active, tell it to disconnect -- in that case the SCCP side will call context_map_free(). + * If SCCP is no longer active, free this map. */ if (map_sccp_is_active(map)) map_sccp_dispatch(map, MAP_SCCP_EV_RAN_DISC, NULL); else - context_map_check_released(map); + context_map_free(map); }
static void map_rua_disconnected_action(struct osmo_fsm_inst *fi, uint32_t event, void *data) diff --git a/src/osmo-hnbgw/context_map_sccp.c b/src/osmo-hnbgw/context_map_sccp.c index 8e04fba..132d03e 100644 --- a/src/osmo-hnbgw/context_map_sccp.c +++ b/src/osmo-hnbgw/context_map_sccp.c @@ -419,13 +419,13 @@ static void map_sccp_disconnected_onenter(struct osmo_fsm_inst *fi, uint32_t prev_state) { struct hnbgw_context_map *map = fi->priv; - /* For sanity, always tell RUA to disconnect, if it hasn't done so. Dispatching MAP_RUA_EV_CN_DISC may send - * RUA into MAP_RUA_ST_DISCONNECTED, which calls context_map_check_released() and frees the hnbgw_context_map, - * so don't free it a second time. If RUA stays active, calling context_map_check_released() has no effect. */ + /* From SCCP's POV, we can now free the hnbgw_context_map. + * If RUA is still active, tell it to disconnect -- in that case the RUA side will call context_map_free(). + * If RUA is no longer active, free this map. */ if (map_rua_is_active(map)) map_rua_dispatch(map, MAP_RUA_EV_CN_DISC, NULL); else - context_map_check_released(map); + context_map_free(map); }
static void map_sccp_disconnected_action(struct osmo_fsm_inst *fi, uint32_t event, void *data)