diff --git a/libdrmutils/drm_master.cpp b/libdrmutils/drm_master.cpp
index 239ec4c..e12b933 100644
--- a/libdrmutils/drm_master.cpp
+++ b/libdrmutils/drm_master.cpp
@@ -73,6 +73,12 @@
   return 0;
 }
 
+void DRMMaster::DestroyInstance() {
+  lock_guard<mutex> obj(s_lock);
+  delete s_instance;
+  s_instance = nullptr;
+}
+
 int DRMMaster::Init() {
   dev_fd_ = drmOpen("msm_drm", nullptr);
   if (dev_fd_ < 0) {
diff --git a/libdrmutils/drm_master.h b/libdrmutils/drm_master.h
index 8c32a1b..15fae68 100644
--- a/libdrmutils/drm_master.h
+++ b/libdrmutils/drm_master.h
@@ -79,6 +79,7 @@
    *   -ENODEV if device cannot be opened or initilization fails
    */
   static int GetInstance(DRMMaster **master);
+  static void DestroyInstance();
 
  private:
   DRMMaster() {}
diff --git a/sdm/libs/core/drm/hw_info_drm.cpp b/sdm/libs/core/drm/hw_info_drm.cpp
index d41206f..2fdef4e 100644
--- a/sdm/libs/core/drm/hw_info_drm.cpp
+++ b/sdm/libs/core/drm/hw_info_drm.cpp
@@ -117,6 +117,9 @@
     DRMLibLoader::GetInstance()->FuncDestroyDRMManager()();
     drm_mgr_intf_ = nullptr;
   }
+
+  DRMLibLoader::Destroy();
+  DRMMaster::DestroyInstance();
 }
 
 DisplayError HWInfoDRM::GetDynamicBWLimits(HWResourceInfo *hw_resource) {
@@ -390,17 +393,13 @@
 
 void HWInfoDRM::GetRotatorFormatsForType(int fd, uint32_t type,
                                          vector<LayerBufferFormat> *supported_formats) {
-  int ret = 0;
   struct v4l2_fmtdesc fmtdesc = {};
   fmtdesc.type = type;
-  while (!ret) {
-    ret = Sys::ioctl_(fd, static_cast<int>(VIDIOC_ENUM_FMT), &fmtdesc);
-    if (!ret) {
-      LayerBufferFormat sdm_format = kFormatInvalid;
-      GetSDMFormat(fmtdesc.pixelformat, &sdm_format);
-      if (sdm_format != kFormatInvalid) {
-        supported_formats->push_back(sdm_format);
-      }
+  while (!Sys::ioctl_(fd, static_cast<int>(VIDIOC_ENUM_FMT), &fmtdesc)) {
+    LayerBufferFormat sdm_format = kFormatInvalid;
+    GetSDMFormat(fmtdesc.pixelformat, &sdm_format);
+    if (sdm_format != kFormatInvalid) {
+      supported_formats->push_back(sdm_format);
     }
     fmtdesc.index++;
   }
@@ -432,9 +431,8 @@
 
 DisplayError HWInfoDRM::GetHWRotatorInfo(HWResourceInfo *hw_resource) {
   const uint32_t kMaxV4L2Nodes = 64;
-  bool found = false;
 
-  for (uint32_t i = 0; (i < kMaxV4L2Nodes) && (false == found); i++) {
+  for (uint32_t i = 0; i < kMaxV4L2Nodes; i++) {
     string path = "/sys/class/video4linux/video" + to_string(i) + "/name";
     Sys::fstream fs(path, fstream::in);
     if (!fs.is_open()) {
@@ -447,9 +445,9 @@
       hw_resource->hw_rot_info.num_rotator++;
       hw_resource->hw_rot_info.type = HWRotatorInfo::ROT_TYPE_V4L2;
       hw_resource->hw_rot_info.has_downscale = true;
-      // We support only 1 rotator
-      found = true;
       GetRotatorSupportedFormats(i, hw_resource);
+      // We support only 1 rotator
+      break;
     }
   }
 
