From b4485ecea2ff0fed61242c449ae61009d910b9df Mon Sep 17 00:00:00 2001 From: Guido Casati Date: Thu, 18 Sep 2025 21:58:52 +0200 Subject: [PATCH] Fix UE context leak in handover failure - Add UE context cleanup before sending handover failure message - Prevents memory/resource leak when PDU session establishment fails during handover - UE context was created but never cleaned up on failure path This fixes a bug where UE contexts would accumulate over time when handovers failed after context creation. --- openair2/RRC/NR/rrc_gNB_NGAP.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/openair2/RRC/NR/rrc_gNB_NGAP.c b/openair2/RRC/NR/rrc_gNB_NGAP.c index 75e6742422..a7ed703f7d 100644 --- a/openair2/RRC/NR/rrc_gNB_NGAP.c +++ b/openair2/RRC/NR/rrc_gNB_NGAP.c @@ -1196,12 +1196,15 @@ int rrc_gNB_process_Handover_Request(gNB_RRC_INST *rrc, instance_t instance, nga if (!trigger_bearer_setup(rrc, UE, msg->nb_of_pdusessions, to_setup, msg->ue_ambr.br_dl)) { LOG_E(NR_RRC, "Failed to establish PDU session: handover failed\n"); + ngap_handover_failure_t fail = { .amf_ue_ngap_id = msg->amf_ue_ngap_id, .cause.type = NGAP_CAUSE_RADIO_NETWORK, .cause.value = NGAP_CAUSE_RADIO_NETWORK_HO_FAILURE_IN_TARGET_5GC_NGRAN_NODE_OR_TARGET_SYSTEM, }; rrc_gNB_send_NGAP_HANDOVER_FAILURE(rrc, &fail); + rrc_remove_ue(rrc, ue_context_p); + return -1; } return 0;