[S] Change in osmo-msc[master]: libvlr: lu_fsm: split off creation and start of the LU FSM
lynxis lazus has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-msc/+/43511?usp=email ) Change subject: libvlr: lu_fsm: split off creation and start of the LU FSM ...................................................................... libvlr: lu_fsm: split off creation and start of the LU FSM Similar to the auth_fsm, ensure the lu_fsm don't run into a use-after-free when the starting event of VLR_AUTH_E_START result in a terminating. Change-Id: Iafce776bf1755951e525b6f7f2ef929dd31c7c9d --- M include/osmocom/vlr/vlr.h M src/libmsc/gsm_04_08.c M src/libvlr/vlr_lu_fsm.c 3 files changed, 21 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/11/43511/1 diff --git a/include/osmocom/vlr/vlr.h b/include/osmocom/vlr/vlr.h index 12b7c6d..d64202b 100644 --- a/include/osmocom/vlr/vlr.h +++ b/include/osmocom/vlr/vlr.h @@ -312,6 +312,8 @@ bool is_r99, bool is_utran, bool assign_tmsi); +int vlr_loc_start(struct osmo_fsm_inst *fi); + struct osmo_fsm_inst * vlr_ra_update(struct osmo_fsm_inst *parent, uint32_t parent_event_success, @@ -328,6 +330,8 @@ bool is_r99, bool is_utran, bool assign_tmsi); +int vlr_ra_start(struct osmo_fsm_inst *fi); + void vlr_loc_update_cancel(struct osmo_fsm_inst *fi, enum osmo_fsm_term_cause fsm_cause, uint8_t gsm48_cause); diff --git a/src/libmsc/gsm_04_08.c b/src/libmsc/gsm_04_08.c index 7a63220..4692ab9 100644 --- a/src/libmsc/gsm_04_08.c +++ b/src/libmsc/gsm_04_08.c @@ -419,6 +419,7 @@ osmo_gsm48_classmark1_is_r99(&lu->classmark1), is_utran, net->vlr->cfg.assign_tmsi); + vlr_loc_start(lu_fsm); if (!lu_fsm) { LOG_MSC_A(msc_a, LOGL_ERROR, "Can't start LU FSM\n"); msc_a_put(msc_a, MSC_A_USE_LOCATION_UPDATING); diff --git a/src/libvlr/vlr_lu_fsm.c b/src/libvlr/vlr_lu_fsm.c index c8b2698..8fc54f8 100644 --- a/src/libvlr/vlr_lu_fsm.c +++ b/src/libvlr/vlr_lu_fsm.c @@ -1743,11 +1743,17 @@ LOGPFSML(fi, LOGL_ERROR, "Authentication & Ciphering is off on UTRAN network. Good luck.\n"); - osmo_fsm_inst_dispatch(fi, VLR_ULA_E_UPDATE_LA, NULL); - return fi; } +int vlr_loc_start(struct osmo_fsm_inst *fi) +{ + if (fi) + return osmo_fsm_inst_dispatch(fi, VLR_ULA_E_UPDATE_LA, NULL); + + return -ENOENT; +} + struct osmo_fsm_inst * vlr_ra_update(struct osmo_fsm_inst *parent, uint32_t parent_event_success, @@ -1801,11 +1807,17 @@ LOGPFSML(fi, LOGL_ERROR, "Authentication & Ciphering is off on UTRAN network. Good luck.\n"); - osmo_fsm_inst_dispatch(fi, VLR_ULA_E_UPDATE_LA, NULL); - return fi; } +int vlr_ra_start(struct osmo_fsm_inst *fi) +{ + if (fi) + return osmo_fsm_inst_dispatch(fi, VLR_ULA_E_UPDATE_LA, NULL); + + return -ENOENT; +} + void vlr_loc_update_cancel(struct osmo_fsm_inst *fi, enum osmo_fsm_term_cause fsm_cause, uint8_t gsm48_cause) -- To view, visit https://gerrit.osmocom.org/c/osmo-msc/+/43511?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: osmo-msc Gerrit-Branch: master Gerrit-Change-Id: Iafce776bf1755951e525b6f7f2ef929dd31c7c9d Gerrit-Change-Number: 43511 Gerrit-PatchSet: 1 Gerrit-Owner: lynxis lazus <lynxis@fe80.eu>
participants (1)
-
lynxis lazus