diff --git a/sdm/libs/hwc2/hwc_callbacks.cpp b/sdm/libs/hwc2/hwc_callbacks.cpp
index ca8c283..5ce9c5f 100644
--- a/sdm/libs/hwc2/hwc_callbacks.cpp
+++ b/sdm/libs/hwc2/hwc_callbacks.cpp
@@ -35,6 +35,7 @@
 namespace sdm {
 
 HWC2::Error HWCCallbacks::Hotplug(hwc2_display_t display, HWC2::Connection state) {
+  std::lock_guard<std::mutex> hotplug_lock(hotplug_mutex_);
   if (!hotplug_) {
     return HWC2::Error::NoResources;
   }
@@ -43,6 +44,7 @@
 }
 
 HWC2::Error HWCCallbacks::Refresh(hwc2_display_t display) {
+  std::lock_guard<std::mutex> refresh_lock(refresh_mutex_);
   if (!refresh_) {
     return HWC2::Error::NoResources;
   }
@@ -52,6 +54,7 @@
 }
 
 HWC2::Error HWCCallbacks::Vsync(hwc2_display_t display, int64_t timestamp) {
+  std::lock_guard<std::mutex> vsync_lock(vsync_mutex_);
   if (!vsync_) {
     return HWC2::Error::NoResources;
   }
@@ -61,6 +64,7 @@
 }
 
 HWC2::Error HWCCallbacks::Vsync_2_4(hwc2_display_t display, int64_t timestamp, uint32_t period) {
+  std::lock_guard<std::mutex> vsync_2_4_lock(vsync_2_4_mutex_);
   if (!vsync_2_4_) {
     return HWC2::Error::NoResources;
   }
@@ -71,6 +75,8 @@
 
 HWC2::Error HWCCallbacks::VsyncPeriodTimingChanged(
     hwc2_display_t display, hwc_vsync_period_change_timeline_t *updated_timeline) {
+  std::lock_guard<std::mutex>
+    vsyncPeriodTimingChanged_lock(vsync_period_timing_changed_mutex_);
   if (!vsync_period_timing_changed_) {
     return HWC2::Error::NoResources;
   }
@@ -82,27 +88,33 @@
 HWC2::Error HWCCallbacks::Register(HWC2::Callback descriptor, hwc2_callback_data_t callback_data,
                                    hwc2_function_pointer_t pointer) {
   switch (descriptor) {
-    case HWC2::Callback::Hotplug:
+    case HWC2::Callback::Hotplug: {
+      std::lock_guard<std::mutex> hotplug_lock(hotplug_mutex_);
       hotplug_data_ = callback_data;
       hotplug_ = reinterpret_cast<HWC2_PFN_HOTPLUG>(pointer);
-      break;
-    case HWC2::Callback::Refresh:
+    } break;
+    case HWC2::Callback::Refresh: {
+      std::lock_guard<std::mutex> refresh_lock(refresh_mutex_);
       refresh_data_ = callback_data;
       refresh_ = reinterpret_cast<HWC2_PFN_REFRESH>(pointer);
-      break;
-    case HWC2::Callback::Vsync:
+    } break;
+    case HWC2::Callback::Vsync: {
+      std::lock_guard<std::mutex> vsync_lock(vsync_mutex_);
       vsync_data_ = callback_data;
       vsync_ = reinterpret_cast<HWC2_PFN_VSYNC>(pointer);
-      break;
-    case HWC2::Callback::Vsync_2_4:
+    } break;
+    case HWC2::Callback::Vsync_2_4: {
+      std::lock_guard<std::mutex> vsync_2_4_lock(vsync_2_4_mutex_);
       vsync_2_4_data_ = callback_data;
       vsync_2_4_ = reinterpret_cast<HWC2_PFN_VSYNC_2_4>(pointer);
-      break;
-    case HWC2::Callback::VsyncPeriodTimingChanged:
+    } break;
+    case HWC2::Callback::VsyncPeriodTimingChanged: {
+      std::lock_guard<std::mutex>
+        vsyncPeriodTimingChanged_lock(vsync_period_timing_changed_mutex_);
       vsync_period_timing_changed_data_ = callback_data;
       vsync_period_timing_changed_ =
-          reinterpret_cast<HWC2_PFN_VSYNC_PERIOD_TIMING_CHANGED>(pointer);
-      break;
+        reinterpret_cast<HWC2_PFN_VSYNC_PERIOD_TIMING_CHANGED>(pointer);
+      } break;
     default:
       return HWC2::Error::BadParameter;
   }
diff --git a/sdm/libs/hwc2/hwc_callbacks.h b/sdm/libs/hwc2/hwc_callbacks.h
index 69c1715..38bb2b3 100644
--- a/sdm/libs/hwc2/hwc_callbacks.h
+++ b/sdm/libs/hwc2/hwc_callbacks.h
@@ -36,6 +36,8 @@
 #undef HWC2_INCLUDE_STRINGIFICATION
 #undef HWC2_USE_CPP11
 
+#include <mutex>
+
 namespace sdm {
 
 class HWCCallbacks {
@@ -81,6 +83,12 @@
   HWC2_PFN_VSYNC_2_4 vsync_2_4_ = nullptr;
   HWC2_PFN_VSYNC_PERIOD_TIMING_CHANGED vsync_period_timing_changed_ = nullptr;
 
+  std::mutex hotplug_mutex_;
+  std::mutex refresh_mutex_;
+  std::mutex vsync_mutex_;
+  std::mutex vsync_2_4_mutex_;
+  std::mutex vsync_period_timing_changed_mutex_;
+
   hwc2_display_t vsync_source_ = HWC_DISPLAY_PRIMARY;   // hw vsync is active on this display
   std::bitset<kNumDisplays> pending_refresh_;         // Displays waiting to get refreshed
 };
