diff --git a/modules/system/system.admin.inc b/modules/system/system.admin.inc
index 277fc3d70a3b6ef1e561a1a5e86f6d11be015183..cba2e3a34368bc9850ff3d7adc8621f1ab75c015 100644
--- a/modules/system/system.admin.inc
+++ b/modules/system/system.admin.inc
@@ -1240,7 +1240,6 @@ function system_modules_submit($form, &$form_state) {
   registry_rebuild();
   system_rebuild_theme_data();
   drupal_theme_rebuild();
-  cache_clear_all('system_list', 'cache_bootstrap');
   node_types_rebuild();
   menu_rebuild();
   cache_clear_all('schema', 'cache');
diff --git a/modules/system/system.module b/modules/system/system.module
index a33807dfddf23c327fda13084c796ddd3be72038..6947c0150587025889c9527d6489ab300a2bfef2 100644
--- a/modules/system/system.module
+++ b/modules/system/system.module
@@ -2173,6 +2173,11 @@ function system_update_files_database(&$files, $type) {
     }
   }
   $query->execute();
+
+  // If any module or theme was moved to a new location, we need to reset the
+  // system_list() cache or we will continue to load the old copy, look for
+  // schema updates in the wrong place, etc.
+  system_list_reset();
 }
 
 /**