diff --git a/fingerprint/BiometricsFingerprint.cpp b/fingerprint/BiometricsFingerprint.cpp
index de65f4e..8697f3e 100644
--- a/fingerprint/BiometricsFingerprint.cpp
+++ b/fingerprint/BiometricsFingerprint.cpp
@@ -187,6 +187,7 @@
 }
 
 Return<RequestStatus> BiometricsFingerprint::cancel() {
+    onFingerUp();
     return ErrorFilter(mDevice->cancel(mDevice));
 }
 
@@ -310,6 +311,9 @@
                     msg->data.enroll.samples_remaining).isOk()) {
                 ALOGE("failed to invoke fingerprint onEnrollResult callback");
             }
+            if (msg->data.enroll.samples_remaining == 0) {
+                thisPtr->onFingerUp();
+            }
             break;
         case FINGERPRINT_TEMPLATE_REMOVED:
             ALOGD("onRemove(fid=%d, gid=%d, rem=%d)",
@@ -347,6 +351,7 @@
                     ALOGE("failed to invoke fingerprint onAuthenticated callback");
                 }
             }
+            thisPtr->onFingerUp();
             break;
         case FINGERPRINT_TEMPLATE_ENUMERATING:
             ALOGD("onEnumerate(fid=%d, gid=%d, rem=%d)",
@@ -370,14 +375,16 @@
 }
 
 Return<void> BiometricsFingerprint::onFingerDown(uint32_t, uint32_t, float, float) {
+    ALOGD("onFingerDown()");
     setUdfpsHbm(true);
     mDevice->send_customized_command(mDevice, CMD_FINGERPRINT_EVENT, CMD_FINGERPRINT_EVENT_DOWN);
     return Void();
 }
 
 Return<void> BiometricsFingerprint::onFingerUp() {
-    setUdfpsHbm(false);
+    ALOGD("onFingerUp()");
     mDevice->send_customized_command(mDevice, CMD_FINGERPRINT_EVENT, CMD_FINGERPRINT_EVENT_UP);
+    setUdfpsHbm(false);
     return Void();
 }
 
