diff --git a/DirectVolume.cpp b/DirectVolume.cpp
index c269303..1f9f084 100644
--- a/DirectVolume.cpp
+++ b/DirectVolume.cpp
@@ -284,6 +284,11 @@
                  getLabel(), getMountpoint(), major, minor);
         mVm->getBroadcaster()->sendBroadcast(ResponseCode::VolumeBadRemoval,
                                              msg, false);
+
+	if (mVm->cleanupAsec(this, true)) {
+            SLOGE("Failed to cleanup ASEC - unmount will probably fail!");
+        }
+
         if (Volume::unmountVol(true)) {
             SLOGE("Failed to unmount volume on bad removal (%s)", 
                  strerror(errno));
diff --git a/VolumeManager.cpp b/VolumeManager.cpp
index 10dbbb5..8a70c37 100644
--- a/VolumeManager.cpp
+++ b/VolumeManager.cpp
@@ -886,14 +886,7 @@
         return -1;
     }
 
-    while(mActiveContainers->size()) {
-        AsecIdCollection::iterator it = mActiveContainers->begin();
-        SLOGI("Unmounting ASEC %s (dependant on %s)", *it, v->getMountpoint());
-        if (unmountAsec(*it, force)) {
-            SLOGE("Failed to unmount ASEC %s (%s)", *it, strerror(errno));
-            return -1;
-        }
-    }
+    cleanupAsec(v, force);
 
     return v->unmountVol(force);
 }
@@ -942,3 +935,15 @@
     return false;
 }
 
+int VolumeManager::cleanupAsec(Volume *v, bool force) {
+    while(mActiveContainers->size()) {
+        AsecIdCollection::iterator it = mActiveContainers->begin();
+        SLOGI("Unmounting ASEC %s (dependant on %s)", *it, v->getMountpoint());
+        if (unmountAsec(*it, force)) {
+            SLOGE("Failed to unmount ASEC %s (%s)", *it, strerror(errno));
+            return -1;
+        }
+    }
+    return 0;
+}
+
diff --git a/VolumeManager.h b/VolumeManager.h
index a675646..2ec9eb3 100644
--- a/VolumeManager.h
+++ b/VolumeManager.h
@@ -71,6 +71,8 @@
 
     // XXX: This should be moved private once switch uevents are working
     void notifyUmsConnected(bool connected);
+    // XXX: Post froyo this should be moved and cleaned up
+    int cleanupAsec(Volume *v, bool force);
 
     void setBroadcaster(SocketListener *sl) { mBroadcaster = sl; }
     SocketListener *getBroadcaster() { return mBroadcaster; }
@@ -78,6 +80,7 @@
     static VolumeManager *Instance();
 
     static char *asecHash(const char *id, char *buffer, size_t len);
+
 private:
     VolumeManager();
     Volume *lookupVolume(const char *label);
