From c99539a8067a434525907d556d98e61e33075126 Mon Sep 17 00:00:00 2001 From: Guido Date: Thu, 1 Dec 2022 05:44:45 -0800 Subject: [PATCH] Bugfix wrong use of qsort - The qsort() function is defined as: void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *)); and sorts an array with nmemb elements of size size. - in the gNB scheduling functions, nmemb and size were swapped - this was causing a stack overflow ending with a SEGFAULT under certain circumstances --- openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c | 2 +- openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c index af76867ef3..7131e9c2b2 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c @@ -628,7 +628,7 @@ void pf_dl(module_id_t module_id, } } - qsort(UE_sched, sizeof(*UE_sched), sizeofArray(UE_sched), comparator); + qsort(UE_sched, sizeofArray(UE_sched), sizeof(UEsched_t), comparator); UEsched_t *iterator = UE_sched; const int min_rbSize = 5; diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c index d6a9553c10..680e308400 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c @@ -1705,7 +1705,7 @@ void pf_ul(module_id_t module_id, curUE++; } - qsort(UE_sched, sizeof(*UE_sched), sizeofArray(UE_sched), comparator); + qsort(UE_sched, sizeofArray(UE_sched), sizeof(UEsched_t), comparator); UEsched_t *iterator=UE_sched; /* Loop UE_sched to find max coeff and allocate transmission */