diff --git a/core/modules/menu/lib/Drupal/menu/MenuFormController.php b/core/modules/menu/lib/Drupal/menu/MenuFormController.php
index caaa320..ff42a20 100644
--- a/core/modules/menu/lib/Drupal/menu/MenuFormController.php
+++ b/core/modules/menu/lib/Drupal/menu/MenuFormController.php
@@ -28,8 +28,6 @@ public function form(array $form, array &$form_state, EntityInterface $menu) {
       '#title' => t('Title'),
       '#default_value' => $menu->label(),
       '#required' => TRUE,
-      // The title of a system menu cannot be altered.
-      '#access' => !isset($system_menus[$menu->id()]),
     );
     $form['id'] = array(
       '#type' => 'machine_name',
diff --git a/core/modules/menu/lib/Drupal/menu/Tests/MenuTest.php b/core/modules/menu/lib/Drupal/menu/Tests/MenuTest.php
index 9f4dcc6..78f5399 100644
--- a/core/modules/menu/lib/Drupal/menu/Tests/MenuTest.php
+++ b/core/modules/menu/lib/Drupal/menu/Tests/MenuTest.php
@@ -284,6 +284,22 @@ function testMenuQueryAndFragment() {
   }
 
   /**
+   * Test renaming built-in menu.
+   */
+  function testSystemMenuRename() {
+    $this->drupalLogin($this->big_user);
+    $edit = array(
+      'label' => $this->randomName(16),
+    );
+    $this->drupalPost('admin/structure/menu/manage/main/edit', $edit, t('Save'));
+
+    // Make sure menu shows up with new name in block addition.
+    $default_theme = variable_get('theme_default', 'stark');
+    $this->drupalget('admin/structure/block/list/block_plugin_ui:' . $default_theme . '/add');
+    $this->assertText($edit['label']);
+  }
+
+  /**
    * Add a menu link using the menu module UI.
    *
    * @param integer $plid Parent menu link id.
diff --git a/core/modules/menu/menu.admin.inc b/core/modules/menu/menu.admin.inc
index 56d5110..9ac32e2 100644
--- a/core/modules/menu/menu.admin.inc
+++ b/core/modules/menu/menu.admin.inc
@@ -221,7 +221,7 @@ function menu_overview_form_submit($complete_form, &$form_state) {
   // parent. To prevent this, save items in the form in the same order they
   // are sent, ensuring parents are saved first, then their children.
   // See http://drupal.org/node/181126#comment-632270
-  $order = array_flip(array_keys($input));
+  $order = is_array($input) ? array_flip(array_keys($input)) : array();
   // Update our original form with the new order.
   $form = array_intersect_key(array_merge($order, $form), $form);
 
diff --git a/core/modules/system/lib/Drupal/system/Plugin/Derivative/SystemMenuBlock.php b/core/modules/system/lib/Drupal/system/Plugin/Derivative/SystemMenuBlock.php
index 5b7c40b..a4754e5 100644
--- a/core/modules/system/lib/Drupal/system/Plugin/Derivative/SystemMenuBlock.php
+++ b/core/modules/system/lib/Drupal/system/Plugin/Derivative/SystemMenuBlock.php
@@ -42,11 +42,14 @@ public function getDerivativeDefinitions(array $base_plugin_definition) {
     foreach (menu_list_system_menus() as $menu => $name) {
       // The block deltas need to be prefixed with 'menu-', since the 'main'
       // menu would otherwise clash with the 'main' page content block.
-      $menu = "menu-$menu";
-      $this->derivatives[$menu] = $base_plugin_definition;
-      $this->derivatives[$menu]['delta'] = $menu;
-      $this->derivatives[$menu]['admin_label'] = $name;
-      $this->derivatives[$menu]['cache'] = DRUPAL_NO_CACHE;
+      $menu_key = 'menu-' . $menu;
+      $this->derivatives[$menu_key] = $base_plugin_definition;
+      $this->derivatives[$menu_key]['delta'] = $menu_key;
+      // It is possible that users changed the menu label. Fall back on the
+      // built-in menu label if the entity was not found.
+      $entity = entity_load('menu', $menu);
+      $this->derivatives[$menu_key]['admin_label'] = !empty($entity) ? $entity->label() : $name;
+      $this->derivatives[$menu_key]['cache'] = DRUPAL_NO_CACHE;
     }
     return $this->derivatives;
   }
