Commit f2213bf7 authored by Laurent THOMAS's avatar Laurent THOMAS

fix a error that was created by over complexity in setting a pointer to null...

fix a error that was created by over complexity in setting a pointer to null for a wrong later assert verification
parent 9fd1b9ac
...@@ -56,6 +56,11 @@ ...@@ -56,6 +56,11 @@
#include "LAYER2/RLC/rlc.h" #include "LAYER2/RLC/rlc.h"
//#define SRS_DEBUG //#define SRS_DEBUG
#define verifyMutex(a) \
{ \
int ret = a; \
AssertFatal(ret == 0, "Failure in mutex management ret=%d\n", a); \
}
static void nr_ue_prach_scheduler(NR_UE_MAC_INST_t *mac, frame_t frameP, sub_frame_t slotP); static void nr_ue_prach_scheduler(NR_UE_MAC_INST_t *mac, frame_t frameP, sub_frame_t slotP);
static void schedule_ta_command(fapi_nr_dl_config_request_t *dl_config, NR_UL_TIME_ALIGNMENT_t *ul_time_alignment); static void schedule_ta_command(fapi_nr_dl_config_request_t *dl_config, NR_UL_TIME_ALIGNMENT_t *ul_time_alignment);
...@@ -65,9 +70,9 @@ void clear_ul_config_request(NR_UE_MAC_INST_t *mac, int scs) ...@@ -65,9 +70,9 @@ void clear_ul_config_request(NR_UE_MAC_INST_t *mac, int scs)
int slots = nr_slots_per_frame[scs]; int slots = nr_slots_per_frame[scs];
for (int i = 0; i < slots ; i++) { for (int i = 0; i < slots ; i++) {
fapi_nr_ul_config_request_t *ul_config = mac->ul_config_request + i; fapi_nr_ul_config_request_t *ul_config = mac->ul_config_request + i;
pthread_mutex_lock(&ul_config->mutex_ul_config); verifyMutex(pthread_mutex_lock(&ul_config->mutex_ul_config));
ul_config->number_pdus = 0; ul_config->number_pdus = 0;
pthread_mutex_unlock(&ul_config->mutex_ul_config); verifyMutex(pthread_mutex_unlock(&ul_config->mutex_ul_config));
} }
} }
...@@ -81,7 +86,7 @@ fapi_nr_ul_config_request_pdu_t *lockGet_ul_config(NR_UE_MAC_INST_t *mac, frame_ ...@@ -81,7 +86,7 @@ fapi_nr_ul_config_request_pdu_t *lockGet_ul_config(NR_UE_MAC_INST_t *mac, frame_
AssertFatal(mac->ul_config_request != NULL, "mac->ul_config_request not initialized, logic bug\n"); AssertFatal(mac->ul_config_request != NULL, "mac->ul_config_request not initialized, logic bug\n");
fapi_nr_ul_config_request_t *ul_config = mac->ul_config_request + slot_tx; fapi_nr_ul_config_request_t *ul_config = mac->ul_config_request + slot_tx;
pthread_mutex_lock(&ul_config->mutex_ul_config); verifyMutex(pthread_mutex_lock(&ul_config->mutex_ul_config));
if (ul_config->number_pdus != 0 && (ul_config->frame != frame_tx || ul_config->slot != slot_tx)) { if (ul_config->number_pdus != 0 && (ul_config->frame != frame_tx || ul_config->slot != slot_tx)) {
LOG_E(NR_MAC, "Error in ul config consistency, clearing slot %d\n", slot_tx); LOG_E(NR_MAC, "Error in ul config consistency, clearing slot %d\n", slot_tx);
ul_config->number_pdus = 0; ul_config->number_pdus = 0;
...@@ -90,12 +95,11 @@ fapi_nr_ul_config_request_pdu_t *lockGet_ul_config(NR_UE_MAC_INST_t *mac, frame_ ...@@ -90,12 +95,11 @@ fapi_nr_ul_config_request_pdu_t *lockGet_ul_config(NR_UE_MAC_INST_t *mac, frame_
ul_config->slot = slot_tx; ul_config->slot = slot_tx;
if (ul_config->number_pdus >= FAPI_NR_UL_CONFIG_LIST_NUM) { if (ul_config->number_pdus >= FAPI_NR_UL_CONFIG_LIST_NUM) {
LOG_E(NR_MAC, "Error in ul config for slot %d, no memory\n", slot_tx); LOG_E(NR_MAC, "Error in ul config for slot %d, no memory\n", slot_tx);
pthread_mutex_unlock(&ul_config->mutex_ul_config); verifyMutex(pthread_mutex_unlock(&ul_config->mutex_ul_config));
return NULL; return NULL;
} }
fapi_nr_ul_config_request_pdu_t *pdu = ul_config->ul_config_list + ul_config->number_pdus++; fapi_nr_ul_config_request_pdu_t *pdu = ul_config->ul_config_list + ul_config->number_pdus++;
pdu->pdu_type = pdu_type; pdu->pdu_type = pdu_type;
AssertFatal(!pdu->lock, "no lock in fapi_nr_ul_config_request_pdu_t, aborting");
pdu->lock = &ul_config->mutex_ul_config; pdu->lock = &ul_config->mutex_ul_config;
pdu->privateNBpdus = &ul_config->number_pdus; pdu->privateNBpdus = &ul_config->number_pdus;
LOG_D(NR_MAC, "Added ul pdu for %d.%d, type %d\n", frame_tx, slot_tx, pdu_type); LOG_D(NR_MAC, "Added ul pdu for %d.%d, type %d\n", frame_tx, slot_tx, pdu_type);
...@@ -181,30 +185,28 @@ void remove_ul_config_last_item(fapi_nr_ul_config_request_pdu_t *pdu) ...@@ -181,30 +185,28 @@ void remove_ul_config_last_item(fapi_nr_ul_config_request_pdu_t *pdu)
void release_ul_config(fapi_nr_ul_config_request_pdu_t *configPerSlot, bool clearIt) void release_ul_config(fapi_nr_ul_config_request_pdu_t *configPerSlot, bool clearIt)
{ {
pthread_mutex_t *lock = configPerSlot->lock;
configPerSlot->lock = NULL;
if (clearIt) if (clearIt)
*configPerSlot->privateNBpdus = 0; *configPerSlot->privateNBpdus = 0;
pthread_mutex_unlock(lock); verifyMutex(pthread_mutex_unlock(configPerSlot->lock));
} }
fapi_nr_ul_config_request_pdu_t *fapiLockIterator(fapi_nr_ul_config_request_t *ul_config, frame_t frame_tx, int slot_tx) fapi_nr_ul_config_request_pdu_t *fapiLockIterator(fapi_nr_ul_config_request_t *ul_config, frame_t frame_tx, int slot_tx)
{ {
pthread_mutex_lock(&ul_config->mutex_ul_config); verifyMutex(pthread_mutex_lock(&ul_config->mutex_ul_config));
if (ul_config->number_pdus >= FAPI_NR_UL_CONFIG_LIST_NUM) { if (ul_config->number_pdus >= FAPI_NR_UL_CONFIG_LIST_NUM) {
LOG_E(NR_MAC, "Error in ul config in slot %d no memory\n", ul_config->slot); LOG_E(NR_MAC, "Error in ul config in slot %d no memory\n", ul_config->slot);
pthread_mutex_unlock(&ul_config->mutex_ul_config); verifyMutex(pthread_mutex_unlock(&ul_config->mutex_ul_config));
return NULL; return NULL;
} }
if (ul_config->number_pdus != 0 && (ul_config->frame != frame_tx || ul_config->slot != slot_tx)) { if (ul_config->number_pdus != 0 && (ul_config->frame != frame_tx || ul_config->slot != slot_tx)) {
LOG_E(NR_MAC, "Error in ul config consistency, clearing it slot %d\n", slot_tx); LOG_E(NR_MAC, "Error in ul config consistency, clearing it slot %d\n", slot_tx);
ul_config->number_pdus = 0; ul_config->number_pdus = 0;
pthread_mutex_unlock(&ul_config->mutex_ul_config); verifyMutex(pthread_mutex_unlock(&ul_config->mutex_ul_config));
return NULL; return NULL;
} }
if (ul_config->number_pdus >= FAPI_NR_UL_CONFIG_LIST_NUM) { if (ul_config->number_pdus >= FAPI_NR_UL_CONFIG_LIST_NUM) {
LOG_E(NR_MAC, "Error in ul config for slot %d, no memory\n", slot_tx); LOG_E(NR_MAC, "Error in ul config for slot %d, no memory\n", slot_tx);
pthread_mutex_unlock(&ul_config->mutex_ul_config); verifyMutex(pthread_mutex_unlock(&ul_config->mutex_ul_config));
return NULL; return NULL;
} }
fapi_nr_ul_config_request_pdu_t *pdu = ul_config->ul_config_list + ul_config->number_pdus; fapi_nr_ul_config_request_pdu_t *pdu = ul_config->ul_config_list + ul_config->number_pdus;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment