diff --git a/modules/aggregator/aggregator.module b/modules/aggregator/aggregator.module
index 10abde5235f5ed0768fbc48c2f9c1637c0887ba8..bd556ed5910978a0c606d77dbabb9bd082db7c9e 100644
--- a/modules/aggregator/aggregator.module
+++ b/modules/aggregator/aggregator.module
@@ -270,9 +270,9 @@ function _aggregator_has_categories() {
 }
 
 /**
- * Implement hook_perm().
+ * Implement hook_permission().
  */
-function aggregator_perm() {
+function aggregator_permission() {
   return array(
     'administer news feeds' => array(
       'title' => t('Administer news feeds'),
diff --git a/modules/block/block.module b/modules/block/block.module
index 0a0c7c95453c795c53aad108cd4101a340f6f982..848b68e3110c671cffcfa76771dd4e02d8a84532 100644
--- a/modules/block/block.module
+++ b/modules/block/block.module
@@ -105,9 +105,9 @@ function block_theme() {
 }
 
 /**
- * Implement hook_perm().
+ * Implement hook_permission().
  */
-function block_perm() {
+function block_permission() {
   return array(
     'administer blocks' => array(
       'title' => t('Administer blocks'),
diff --git a/modules/blog/blog.module b/modules/blog/blog.module
index c0ceee50dded60b74e4cc56d820899485cc4a657..c45fcea12930cfba26a63e23d9359bcaae5b36a8 100644
--- a/modules/blog/blog.module
+++ b/modules/blog/blog.module
@@ -20,9 +20,9 @@ function blog_node_info() {
 }
 
 /**
- * Implement hook_perm().
+ * Implement hook_permission().
  */
-function blog_perm() {
+function blog_permission() {
   return node_list_permissions('blog');
 }
 
diff --git a/modules/blogapi/blogapi.module b/modules/blogapi/blogapi.module
index bec00d1dcc0b322c821ed327e02423333f6bd2e3..17a0071f560f330d0153e3e38f26cdab1f34f1a5 100644
--- a/modules/blogapi/blogapi.module
+++ b/modules/blogapi/blogapi.module
@@ -21,9 +21,9 @@ function blogapi_help($path, $arg) {
 }
 
 /**
- * Implement hook_perm().
+ * Implement hook_permission().
  */
-function blogapi_perm() {
+function blogapi_permission() {
   return array(
     'administer content with blog api' => array(
       'title' => t('Administer content with blog API'),
diff --git a/modules/book/book.module b/modules/book/book.module
index 825f53dd692ccc7effff34632f0b26d80dfa72b0..b9aa9b64cbf3bee7fa43b1de60f5b7a2d6a51574 100644
--- a/modules/book/book.module
+++ b/modules/book/book.module
@@ -37,9 +37,9 @@ function book_theme() {
 }
 
 /**
- * Implement hook_perm().
+ * Implement hook_permission().
  */
-function book_perm() {
+function book_permission() {
   return array(
     'administer book outlines' => array(
       'title' => t('Administer book outlines'),
diff --git a/modules/comment/comment.module b/modules/comment/comment.module
index 775a2db254bfe245ef6ccf0b38d22a105ec85168..2aacca3d72d3e8b5b0c47189545f37c58de85484 100644
--- a/modules/comment/comment.module
+++ b/modules/comment/comment.module
@@ -224,9 +224,9 @@ function comment_node_type($op, $info) {
 }
 
 /**
- * Implement hook_perm().
+ * Implement hook_permission().
  */
-function comment_perm() {
+function comment_permission() {
   return array(
     'administer comments' => array(
       'title' => t('Administer comments'),
diff --git a/modules/contact/contact.module b/modules/contact/contact.module
index eb3056e3bce5b6bd2096bc8a2a3f6ffc2c0da216..6d59ebc53ab47a5b7d4c8763563e24fc2506cf9b 100644
--- a/modules/contact/contact.module
+++ b/modules/contact/contact.module
@@ -33,9 +33,9 @@ function contact_help($path, $arg) {
 }
 
 /**
- * Implement hook_perm().
+ * Implement hook_permission().
  */
-function contact_perm() {
+function contact_permission() {
   return array(
     'administer site-wide contact form' => array(
       'title' => t('Administer site-wide contact form'),
diff --git a/modules/filter/filter.module b/modules/filter/filter.module
index f2bb7163438b673e33912a1ac95f499213570a57..7896187e92c20b1727474b4119425671c99b4167 100644
--- a/modules/filter/filter.module
+++ b/modules/filter/filter.module
@@ -145,9 +145,9 @@ function filter_admin_format_title($format) {
 }
 
 /**
- * Implement hook_perm().
+ * Implement hook_permission().
  */
-function filter_perm() {
+function filter_permission() {
   return array(
     'administer filters' => array(
       'title' => t('Administer filters'),
diff --git a/modules/forum/forum.module b/modules/forum/forum.module
index ef5c9517a12f3eb122ee8cb1c76ca494b9a8fcd4..baac678adac39aa8f39cdbd4107535504c314b71 100644
--- a/modules/forum/forum.module
+++ b/modules/forum/forum.module
@@ -419,9 +419,9 @@ function forum_access($op, $node, $account) {
 }
 
 /**
- * Implement hook_perm().
+ * Implement hook_permission().
  */
-function forum_perm() {
+function forum_permission() {
   $perms = array(
     'administer forums' => array(
       'title' => t('Administer forums'),
diff --git a/modules/locale/locale.module b/modules/locale/locale.module
index 1f4214c58dc8d92cfaf6ea9af7d01d9cb1318ac7..cc558048ef5918432a834acc50c5e977c5ddacc4 100644
--- a/modules/locale/locale.module
+++ b/modules/locale/locale.module
@@ -184,9 +184,9 @@ function locale_inc_callback() {
 }
 
 /**
- * Implement hook_perm().
+ * Implement hook_permission().
  */
-function locale_perm() {
+function locale_permission() {
   return array(
     'administer languages' => array(
       'title' => t('Administer languages'),
diff --git a/modules/menu/menu.module b/modules/menu/menu.module
index 597ee0eb9ee28db3f2aa62569ba5c10856897c3d..46d47bf3954e646fef2dbcee6793e759567bc152 100644
--- a/modules/menu/menu.module
+++ b/modules/menu/menu.module
@@ -33,9 +33,9 @@ function menu_help($path, $arg) {
 }
 
 /**
- * Implement hook_perm().
+ * Implement hook_permission().
  */
-function menu_perm() {
+function menu_permission() {
   return array(
     'administer menu' => array(
       'title' => t('Administer menu'),
diff --git a/modules/node/node.module b/modules/node/node.module
index 28a476d14b8157a3c406fa2691eaabe44c650da9..7fc0e7ab848e27d0c915ee53e27a9f588d872c18 100644
--- a/modules/node/node.module
+++ b/modules/node/node.module
@@ -1261,9 +1261,9 @@ function theme_node_log_message($log) {
 }
 
 /**
- * Implement hook_perm().
+ * Implement hook_permission().
  */
-function node_perm() {
+function node_permission() {
   $perms = array(
     'administer content types' => array(
       'title' => t('Administer content types'),
diff --git a/modules/path/path.module b/modules/path/path.module
index 191ce4f0bc9c304071fe487659036dffce65379b..8608a34d274df2b950fc8d4da38fb245f5cdbee6 100644
--- a/modules/path/path.module
+++ b/modules/path/path.module
@@ -256,9 +256,9 @@ function path_form_alter(&$form, $form_state, $form_id) {
 }
 
 /**
- * Implement hook_perm().
+ * Implement hook_permission().
  */
-function path_perm() {
+function path_permission() {
   return array(
     'administer url aliases' => array(
       'title' => t('Administer URL aliases'),
diff --git a/modules/php/php.module b/modules/php/php.module
index d4b4b43a07df94f43f0be41ae5e743afe0ca3fce..fccb0464a885481bc30e989a7b99882bc68dfc3f 100644
--- a/modules/php/php.module
+++ b/modules/php/php.module
@@ -22,9 +22,9 @@ function php_help($path, $arg) {
 }
 
 /**
- * Implement hook_perm().
+ * Implement hook_permission().
  */
-function php_perm() {
+function php_permission() {
   return array(
     'use PHP for settings' => array(
       'title' => t('Use PHP for settings'),
diff --git a/modules/poll/poll.module b/modules/poll/poll.module
index ed1b4e90b3f15dac13c514304e47aa118403ef20..5406c4fa14c324eacec7130f2fd37928e619be6c 100644
--- a/modules/poll/poll.module
+++ b/modules/poll/poll.module
@@ -51,9 +51,9 @@ function poll_theme() {
 }
 
 /**
- * Implement hook_perm().
+ * Implement hook_permission().
  */
-function poll_perm() {
+function poll_permission() {
   $perms = node_list_permissions('poll');
   $perms += array(
     'vote on polls' => array(
diff --git a/modules/search/search.module b/modules/search/search.module
index 5dc426210dc97c53b04408960c2e0c7fef6e7e7e..9b3c198e79cc75fcf5f62df40e9a96c6326e3d59 100644
--- a/modules/search/search.module
+++ b/modules/search/search.module
@@ -141,9 +141,9 @@ function search_theme() {
 }
 
 /**
- * Implement hook_perm().
+ * Implement hook_permission().
  */
-function search_perm() {
+function search_permission() {
   return array(
     'administer search' => array(
       'title' => t('Administer search'),
diff --git a/modules/simpletest/drupal_web_test_case.php b/modules/simpletest/drupal_web_test_case.php
index 40b3fbd275153fcb8f9c5cae7277708b4dcc9b8d..8f03bd5fceb8906249a67354d4069426cabee78f 100644
--- a/modules/simpletest/drupal_web_test_case.php
+++ b/modules/simpletest/drupal_web_test_case.php
@@ -876,7 +876,7 @@ protected function checkPermissions(array $permissions, $reset = FALSE) {
     static $available;
 
     if (!isset($available) || $reset) {
-      $available = array_keys(module_invoke_all('perm'));
+      $available = array_keys(module_invoke_all('permission'));
     }
 
     $valid = TRUE;
diff --git a/modules/simpletest/simpletest.module b/modules/simpletest/simpletest.module
index 1bd156a79809a608e9d67ce869c999809c1a195c..4a131db9b3529e7e1d1bdb80e6e87754ee574eb2 100644
--- a/modules/simpletest/simpletest.module
+++ b/modules/simpletest/simpletest.module
@@ -44,9 +44,9 @@ function simpletest_menu() {
 }
 
 /**
- * Implement hook_perm().
+ * Implement hook_permission().
  */
-function simpletest_perm() {
+function simpletest_permission() {
   return array(
     'administer unit tests' => array(
       'title' => t('Administer unit tests'),
diff --git a/modules/simpletest/tests/field_test.module b/modules/simpletest/tests/field_test.module
index abf6aaf06726cad5834ee70d7f3feae6bfe00018..74bba9dcb61e8e65cbe292620452417932f8b76b 100644
--- a/modules/simpletest/tests/field_test.module
+++ b/modules/simpletest/tests/field_test.module
@@ -5,9 +5,9 @@
 define('FIELD_TEST_BUNDLE', 'test_bundle');
 
 /**
- * Implement hook_perm().
+ * Implement hook_permission().
  */
-function field_test_perm() {
+function field_test_permission() {
   $perms = array(
     'access field_test content' => array(
       'title' => t('Access field_test content'),
diff --git a/modules/simpletest/tests/module_test.module b/modules/simpletest/tests/module_test.module
index 33dd979c14f1021facc3a714f07c4092afff781f..331a9d9273b13ef6e3bf2d53e47b7ab9b2a47dea 100644
--- a/modules/simpletest/tests/module_test.module
+++ b/modules/simpletest/tests/module_test.module
@@ -2,9 +2,9 @@
 // $Id$
 
 /**
- * Implement hook_perm().
+ * Implement hook_permission().
  */
-function module_test_perm() {
+function module_test_permission() {
   return array(
     'module_test perm' => t('example perm for module_test module'),
   );
diff --git a/modules/statistics/statistics.module b/modules/statistics/statistics.module
index 7830b254c6c383d8d060d37ffc1df606099b74b8..fcf7220dd9c3fcbc922ecfb18fa9e1cd7e783ac7 100644
--- a/modules/statistics/statistics.module
+++ b/modules/statistics/statistics.module
@@ -81,9 +81,9 @@ function statistics_exit() {
 }
 
 /**
- * Implement hook_perm().
+ * Implement hook_permission().
  */
-function statistics_perm() {
+function statistics_permission() {
   return array(
     'access statistics' => array(
       'title' => t('Access statistics'),
diff --git a/modules/system/system.api.php b/modules/system/system.api.php
index adae28f30598501951d81458f162595db2afdb50..c14001baae41ecc2108eb28fb4c536e585ee8fe4 100644
--- a/modules/system/system.api.php
+++ b/modules/system/system.api.php
@@ -668,7 +668,7 @@ function hook_system_info_alter(&$info, $file) {
  *
  * For a detailed usage example, see page_example.module.
  */
-function hook_perm() {
+function hook_permission() {
   return array(
     'administer my module' =>  array(
       'title' => t('Administer my module'),
diff --git a/modules/system/system.module b/modules/system/system.module
index f8d1abe18a6b49df3dda8527aba9685a4fce339a..e05e27e5d11792ac6422a6eaa2667dd56f657f8a 100644
--- a/modules/system/system.module
+++ b/modules/system/system.module
@@ -193,9 +193,9 @@ function system_theme() {
 }
 
 /**
- * Implement hook_perm().
+ * Implement hook_permission().
  */
-function system_perm() {
+function system_permission() {
   return array(
     'administer site configuration' => array(
       'title' => t('Administer site configuration'),
@@ -2206,7 +2206,7 @@ function system_get_module_admin_tasks($module) {
   $admin_tasks = array();
   $admin_task_count = 0;
   // Check for permissions.
-  if (in_array($module, module_implements('perm')) && $admin_access) {
+  if (in_array($module, module_implements('permission')) && $admin_access) {
     $admin_tasks[-1] = l(t('Configure permissions'), 'admin/user/permissions', array('fragment' => 'module-' . $module));
   }
 
diff --git a/modules/taxonomy/taxonomy.module b/modules/taxonomy/taxonomy.module
index 8fe47ad6ddb40c928bebe3daa8dd2d99eddce229..9fb5a54d5085a3c6aca8b8ca5e6fa8d2a771db0b 100644
--- a/modules/taxonomy/taxonomy.module
+++ b/modules/taxonomy/taxonomy.module
@@ -7,9 +7,9 @@
  */
 
 /**
- * Implement hook_perm().
+ * Implement hook_permission().
  */
-function taxonomy_perm() {
+function taxonomy_permission() {
   return array(
     'administer taxonomy' => array(
       'title' => t('Administer taxonomy'),
diff --git a/modules/toolbar/toolbar.module b/modules/toolbar/toolbar.module
index cf38e738b2f8f2ff0c45b4fb2d55036e1f74fd94..57d7c9b135c0fdefd83b06b93b97bbee4f55995f 100644
--- a/modules/toolbar/toolbar.module
+++ b/modules/toolbar/toolbar.module
@@ -7,9 +7,9 @@
  */
 
 /**
- * Implementation of hook_perm().
+ * Implementation of hook_permission().
  */
-function toolbar_perm() {
+function toolbar_permission() {
   return array(
     'access toolbar' => array(
       'title' => t('Access administration toolbar'),
diff --git a/modules/translation/translation.module b/modules/translation/translation.module
index de2eb4871d50d91a346575e37382241c061d6c43..18ab50435ba979cfb97e2dd9e4cd047db4c89139 100644
--- a/modules/translation/translation.module
+++ b/modules/translation/translation.module
@@ -82,9 +82,9 @@ function _translation_tab_access($node) {
 }
 
 /**
- * Implement hook_perm().
+ * Implement hook_permission().
  */
-function translation_perm() {
+function translation_permission() {
   return array(
     'translate content' => array(
       'title' => t('Translate content'),
diff --git a/modules/upload/upload.module b/modules/upload/upload.module
index 2d1d6aac42428ff59d2efbffb54515094aae3ce6..c73724c3ae7cad12ce404d07dcaa06f4b4a74324 100644
--- a/modules/upload/upload.module
+++ b/modules/upload/upload.module
@@ -40,9 +40,9 @@ function upload_theme() {
 }
 
 /**
- * Implement hook_perm().
+ * Implement hook_permission().
  */
-function upload_perm() {
+function upload_permission() {
   return array(
     'upload files' => array(
       'title' => t('Upload files'),
diff --git a/modules/user/user.admin.inc b/modules/user/user.admin.inc
index b5b3e533024dc9b99121f8929a98ce28616a3bc2..873ac067c0fc71f25834031abc68288c6813fe1f 100644
--- a/modules/user/user.admin.inc
+++ b/modules/user/user.admin.inc
@@ -606,8 +606,8 @@ function user_admin_perm($form_state, $rid = NULL) {
   // Render role/permission overview:
   $options = array();
   $hide_descriptions = !system_admin_compact_mode();
-  foreach (module_implements('perm') as $module) {
-    if ($permissions = module_invoke($module, 'perm')) {
+  foreach (module_implements('permission') as $module) {
+    if ($permissions = module_invoke($module, 'permission')) {
       $info = drupal_parse_info_file(drupal_get_path('module', $module) . "/$module.info");
       $form['permission'][] = array(
         '#markup' => $info['name'],
@@ -933,7 +933,7 @@ function user_modules_installed($modules) {
   $rid = variable_get('user_admin_role', 0);
   if ($rid) {
     foreach ($modules as $module) {
-      if ($permissions = module_invoke($module, 'perm')) {
+      if ($permissions = module_invoke($module, 'permission')) {
         foreach (array_keys($permissions) as $permission) {
           db_insert('role_permission')
             ->fields(array(
@@ -952,7 +952,7 @@ function user_modules_installed($modules) {
 function user_modules_uninstalled($modules) {
   $permissions = array();
   foreach ($modules as $module) {
-    $permissions = array_merge($permissions, array_keys(module_invoke($module, 'perm')));
+    $permissions = array_merge($permissions, array_keys(module_invoke($module, 'permission')));
   }
   if (!empty($permissions)) {
     db_delete('role_permission')
diff --git a/modules/user/user.module b/modules/user/user.module
index 5a5b70f5e8ab344fdefb5c545c82bc98506f6785..4e5589994077413ae2bd6918b123a35f2d7d4f0b 100644
--- a/modules/user/user.module
+++ b/modules/user/user.module
@@ -745,9 +745,9 @@ function user_is_blocked($name) {
 }
 
 /**
- * Implement hook_perm().
+ * Implement hook_permission().
  */
-function user_perm() {
+function user_permission() {
   return array(
     'administer permissions' =>  array(
       'title' => t('Administer permissions'),
@@ -2394,9 +2394,9 @@ function user_filters() {
   }
 
   $options = array();
-  foreach (module_implements('perm') as $module) {
-    $function = $module . '_perm';
-    if ($permissions = $function('perm')) {
+  foreach (module_implements('permission') as $module) {
+    $function = $module . '_permission';
+    if ($permissions = $function('permission')) {
       asort($permissions);
       foreach ($permissions as $permission => $description) {
         $options[t('@module module', array('@module' => $module))][$permission] = t($permission);
diff --git a/profiles/default/default.profile b/profiles/default/default.profile
index a0b78930bd604068e4309d874322624ec166f546..52aa210687101f822e379efc3820acacd0f4353d 100644
--- a/profiles/default/default.profile
+++ b/profiles/default/default.profile
@@ -222,7 +222,7 @@ function default_profile_tasks(&$task, $url) {
   variable_set('user_admin_role', $rid);
 
   // Assign all available permissions to this role.
-  foreach (module_invoke_all('perm') as $key => $value) {
+  foreach (module_invoke_all('permission') as $key => $value) {
     db_insert('role_permission')
       ->fields(array(
         'rid' => $rid,