From 7712a286dccea029785976311433cf8673594f6f Mon Sep 17 00:00:00 2001
From: Stefan Kerkmann <karlk90@pm.me>
Date: Tue, 19 Apr 2022 12:56:16 +0200
Subject: [Core] Use a mutex guard for split shared memory (#16647)

---
 quantum/split_common/transactions.c | 17 ++++++++---------
 1 file changed, 8 insertions(+), 9 deletions(-)

(limited to 'quantum/split_common')

diff --git a/quantum/split_common/transactions.c b/quantum/split_common/transactions.c
index 105bf918cb..9e3df534e3 100644
--- a/quantum/split_common/transactions.c
+++ b/quantum/split_common/transactions.c
@@ -23,8 +23,9 @@
 #include "quantum.h"
 #include "transactions.h"
 #include "transport.h"
-#include "split_util.h"
 #include "transaction_id_define.h"
+#include "split_util.h"
+#include "synchronization_util.h"
 
 #define SYNC_TIMER_OFFSET 2
 
@@ -63,9 +64,7 @@ static bool transaction_handler_master(matrix_row_t master_matrix[], matrix_row_
             }
         }
         bool this_okay = true;
-        ATOMIC_BLOCK_FORCEON {
-            this_okay = handler(master_matrix, slave_matrix);
-        };
+        this_okay      = handler(master_matrix, slave_matrix);
         if (this_okay) return true;
     }
     dprintf("Failed to execute %s\n", prefix);
@@ -77,11 +76,11 @@ static bool transaction_handler_master(matrix_row_t master_matrix[], matrix_row_
         if (!transaction_handler_master(master_matrix, slave_matrix, #prefix, &prefix##_handlers_master)) return false; \
     } while (0)
 
-#define TRANSACTION_HANDLER_SLAVE(prefix)                         \
-    do {                                                          \
-        ATOMIC_BLOCK_FORCEON {                                    \
-            prefix##_handlers_slave(master_matrix, slave_matrix); \
-        };                                                        \
+#define TRANSACTION_HANDLER_SLAVE(prefix)                     \
+    do {                                                      \
+        split_shared_memory_lock();                           \
+        prefix##_handlers_slave(master_matrix, slave_matrix); \
+        split_shared_memory_unlock();                         \
     } while (0)
 
 inline static bool read_if_checksum_mismatch(int8_t trans_id_checksum, int8_t trans_id_retrieve, uint32_t *last_update, void *destination, const void *equiv_shmem, size_t length) {
-- 
cgit v1.2.3