diff --git a/libhwcomposer/hwc_utils.cpp b/libhwcomposer/hwc_utils.cpp
index e741eaa..41a9c5a 100644
--- a/libhwcomposer/hwc_utils.cpp
+++ b/libhwcomposer/hwc_utils.cpp
@@ -224,31 +224,29 @@
         }
     }
 
-    if (count) {
-        data.acq_fen_fd_cnt = count;
-        fbFd = ctx->dpyAttr[dpy].fd;
+    data.acq_fen_fd_cnt = count;
+    fbFd = ctx->dpyAttr[dpy].fd;
 
-        //Waits for acquire fences, returns a release fence
-        ret = ioctl(fbFd, MSMFB_BUFFER_SYNC, &data);
-        if(ret < 0) {
-            ALOGE("ioctl MSMFB_BUFFER_SYNC failed, err=%s",
-                    strerror(errno));
-        }
-
-        for(uint32_t i = 0; i < list->numHwLayers; i++) {
-            if((list->hwLayers[i].compositionType == HWC_OVERLAY ||
-                list->hwLayers[i].compositionType == HWC_FRAMEBUFFER_TARGET)) {
-                //Close the acquireFenceFds
-                if(list->hwLayers[i].acquireFenceFd > 0) {
-                    close(list->hwLayers[i].acquireFenceFd);
-                    list->hwLayers[i].acquireFenceFd = -1;
-                }
-                //Populate releaseFenceFds.
-                list->hwLayers[i].releaseFenceFd = dup(releaseFd);
-            }
-        }
-        list->retireFenceFd = releaseFd;
+    //Waits for acquire fences, returns a release fence
+    ret = ioctl(fbFd, MSMFB_BUFFER_SYNC, &data);
+    if(ret < 0) {
+        ALOGE("ioctl MSMFB_BUFFER_SYNC failed, err=%s",
+                strerror(errno));
     }
+
+    for(uint32_t i = 0; i < list->numHwLayers; i++) {
+        if((list->hwLayers[i].compositionType == HWC_OVERLAY ||
+            list->hwLayers[i].compositionType == HWC_FRAMEBUFFER_TARGET)) {
+            //Close the acquireFenceFds
+            if(list->hwLayers[i].acquireFenceFd > 0) {
+                close(list->hwLayers[i].acquireFenceFd);
+                list->hwLayers[i].acquireFenceFd = -1;
+            }
+            //Populate releaseFenceFds.
+            list->hwLayers[i].releaseFenceFd = dup(releaseFd);
+        }
+    }
+    list->retireFenceFd = releaseFd;
 #endif
     return ret;
 }
