diff --git a/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c b/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
index 08986221154e0bc82053d9cfe958be90778dc75e..db10844736203149af083fac9982f47bf5d89d8e 100644
--- a/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
+++ b/openair2/LAYER2/MAC/eNB_scheduler_dlsch.c
@@ -573,7 +573,9 @@ schedule_ue_spec(module_id_t module_idP,
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_PREPROCESSOR,
                                           VCD_FUNCTION_IN);
   start_meas(&eNB->schedule_dlsch_preprocessor);
+  pthread_mutex_lock(&eNB->pp_dl_mutex);
   eNB->pre_processor_dl.dl(module_idP, CC_id, frameP, subframeP);
+  pthread_mutex_unlock(&eNB->pp_dl_mutex);
   stop_meas(&eNB->schedule_dlsch_preprocessor);
   VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_DLSCH_PREPROCESSOR,
                                           VCD_FUNCTION_OUT);
diff --git a/openair2/LAYER2/MAC/mac.h b/openair2/LAYER2/MAC/mac.h
index 12ffaf4a5b782d1bdbf57eda7dafe35fe55ff827..b7ed9107d9f4c08103006ca0c1d2865ff57f462a 100644
--- a/openair2/LAYER2/MAC/mac.h
+++ b/openair2/LAYER2/MAC/mac.h
@@ -1442,6 +1442,7 @@ typedef struct eNB_MAC_INST_s {
   /// are called by ULSCH/DLSCH, respectively. Pro-processor implementation can
   /// encapsulate slicing.
   pp_impl_param_t pre_processor_dl;
+  pthread_mutex_t pp_dl_mutex;
   pp_impl_param_t pre_processor_ul;
 
   int32_t puSch10xSnr;