diff --git a/system/bta/hh/bta_hh_utils.cc b/system/bta/hh/bta_hh_utils.cc
index 28dd2be54f8ba06f5f9318f13c9fde0336f828de..d0f60313345c642eba04ac689deceeb3da8ee931 100644
--- a/system/bta/hh/bta_hh_utils.cc
+++ b/system/bta/hh/bta_hh_utils.cc
@@ -429,7 +429,12 @@ void bta_hh_cleanup_disable(tBTA_HH_STATUS status) {
     osi_free_and_reset(
         (void**)&bta_hh_cb.kdev[xx].dscp_info.descriptor.dsc_list);
   }
-  osi_free_and_reset((void**)&bta_hh_cb.p_disc_db);
+
+  if (bta_hh_cb.p_disc_db) {
+    /* Cancel SDP if it had been started. */
+    (void)SDP_CancelServiceSearch (bta_hh_cb.p_disc_db);
+    osi_free_and_reset((void**)&bta_hh_cb.p_disc_db);
+  }
 
   if (bta_hh_cb.p_cback) {
     (*bta_hh_cb.p_cback)(BTA_HH_DISABLE_EVT, (tBTA_HH*)&status);