diff --git a/src/com/android/settings/CryptKeeper.java b/src/com/android/settings/CryptKeeper.java
index d974d00..352fbd9 100644
--- a/src/com/android/settings/CryptKeeper.java
+++ b/src/com/android/settings/CryptKeeper.java
@@ -174,6 +174,9 @@
                 // Factory reset the device.
                 sendBroadcast(new Intent("android.intent.action.MASTER_CLEAR"));
             } else if ((failedAttempts % COOL_DOWN_ATTEMPTS) == 0) {
+                if (mLockPatternView != null) {
+                    mLockPatternView.clearPattern();
+                }
                 mCooldown = COOL_DOWN_INTERVAL;
                 cooldown();
             } else {
@@ -183,6 +186,9 @@
                 if (mPasswordEntry != null) {
                     mPasswordEntry.setEnabled(true);
                 }
+                if (mLockPatternView != null) {
+                    mLockPatternView.setEnabled(true);
+                }
             }
         }
     }
@@ -373,6 +379,7 @@
                 setContentView(R.layout.crypt_keeper_pin_entry);
             } else if (type == StorageManager.CRYPT_TYPE_PATTERN) {
                 setContentView(R.layout.crypt_keeper_pattern_entry);
+                setBackFunctionality(false);
             } else {
                 setContentView(R.layout.crypt_keeper_password_entry);
             }
@@ -498,8 +505,13 @@
 
         if (mCooldown <= 0) {
             // Re-enable the password entry and back presses.
-            mPasswordEntry.setEnabled(true);
-            setBackFunctionality(true);
+            if (mPasswordEntry != null) {
+                mPasswordEntry.setEnabled(true);
+                setBackFunctionality(true);
+            }
+            if (mLockPatternView != null) {
+                mLockPatternView.setEnabled(true);
+            }
             status.setText(R.string.enter_password);
         } else {
             CharSequence template = getText(R.string.crypt_keeper_cooldown);
@@ -537,6 +549,7 @@
 
             @Override
             public void onPatternDetected(List<LockPatternView.Cell> pattern) {
+                mLockPatternView.setEnabled(false);
                 new DecryptTask().execute(LockPatternUtils.patternToString(pattern));
             }
 
