diff --git modules/system/system.admin.inc modules/system/system.admin.inc
index 91f9b35..213f3ec 100644
--- modules/system/system.admin.inc
+++ modules/system/system.admin.inc
@@ -830,14 +830,6 @@ function _system_is_incompatible(&$incompatible, $files, $file) {
 function system_modules($form, $form_state = array()) {
   // Get current list of modules.
   $files = system_rebuild_module_data();
-
-  // Remove hidden modules from display list.
-  foreach ($files as $filename => $file) {
-    if (!empty($file->info['hidden']) || !empty($file->info['required'])) {
-      unset($files[$filename]);
-    }
-  }
-
   uasort($files, 'system_sort_modules_by_info_name');
 
   // If the modules form was submitted, then system_modules_submit() runs first
@@ -856,6 +848,10 @@ function system_modules($form, $form_state = array()) {
 
   // Iterate through each of the modules.
   foreach ($files as $filename => $module) {
+    // Remove hidden modules from display list.
+    if (!empty($module->info['hidden']) || !empty($module->info['required'])) {
+      continue;
+    }
     $extra = array();
     $extra['enabled'] = (bool) $module->status;
     // If this module requires other modules, add them to the array.
