diff --git a/core/modules/menu/lib/Drupal/menu/MenuFormController.php b/core/modules/menu/lib/Drupal/menu/MenuFormController.php
index c51678f..270867d 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 75532b0..130e05e 100644
--- a/core/modules/menu/lib/Drupal/menu/Tests/MenuTest.php
+++ b/core/modules/menu/lib/Drupal/menu/Tests/MenuTest.php
@@ -276,6 +276,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 a04fca5..5bb5816 100644
--- a/core/modules/menu/menu.admin.inc
+++ b/core/modules/menu/menu.admin.inc
@@ -220,7 +220,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 8123732..46f0b1d 100644
--- a/core/modules/system/lib/Drupal/system/Plugin/Derivative/SystemMenuBlock.php
+++ b/core/modules/system/lib/Drupal/system/Plugin/Derivative/SystemMenuBlock.php
@@ -40,12 +40,13 @@ public function getDerivativeDefinition($derivative_id, array $base_plugin_defin
   public function getDerivativeDefinitions(array $base_plugin_definition) {
     // Provide a block plugin definition for each system menu.
     foreach (menu_list_system_menus() as $menu => $name) {
+      $this->derivatives[$menu] = $base_plugin_definition;
       // 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]['subject'] = $name;
+      $this->derivatives[$menu]['delta'] = 'menu-' . $menu;
+      // It is possible that users changed the menu label.
+      $entity = entity_load('menu', $menu);
+      $this->derivatives[$menu]['subject'] = $entity->label();
       $this->derivatives[$menu]['cache'] = DRUPAL_NO_CACHE;
     }
     return $this->derivatives;
