diff --git a/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.c b/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.c
index c15b9368707e85391b91c7c04c378c8f9e4727ec..b38304742b579dca16e5f5f730143e6572d358ff 100644
--- a/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.c
+++ b/openair2/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.c
@@ -122,8 +122,13 @@ int flexran_agent_mac_stats_reply(mid_t mod_id,
                         for (j = 0; j < ue_report[i]->n_rlc_report; j++) {
 
                               rlc_reports[j] = malloc(sizeof(Protocol__FlexRlcBsr));
-                              if (rlc_reports[j] == NULL)
+                              if (rlc_reports[j] == NULL){
+                                 for (k = 0; k < j; k++){
+                                   free(rlc_reports[k]);
+                                 }
+                                 free(rlc_reports);
                                  goto error;
+                              }
                               protocol__flex_rlc_bsr__init(rlc_reports[j]);
                               rlc_reports[j]->lc_id = j+1;
                               rlc_reports[j]->has_lc_id = 1;