diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeAdminTest.php b/core/modules/node/lib/Drupal/node/Tests/NodeAdminTest.php
index bcfbfcd..cbac34c 100644
--- a/core/modules/node/lib/Drupal/node/Tests/NodeAdminTest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/NodeAdminTest.php
@@ -28,7 +28,7 @@ function setUp() {
     // correctly.
     user_role_revoke_permissions(DRUPAL_AUTHENTICATED_RID, array('view own unpublished content'));
 
-    $this->admin_user = $this->drupalCreateUser(array('access administration pages', 'access content overview', 'administer nodes', 'bypass node access'));
+    $this->admin_user = $this->drupalCreateUser(array('access administration pages', 'access content overview', 'administer nodes', 'bypass node access', 'administer content types'));
     $this->base_user_1 = $this->drupalCreateUser(array('access content overview'));
     $this->base_user_2 = $this->drupalCreateUser(array('access content overview', 'view own unpublished content'));
     $this->base_user_3 = $this->drupalCreateUser(array('access content overview', 'bypass node access'));
@@ -171,5 +171,20 @@ function testContentAdminPages() {
       $this->assertLinkByHref('node/' . $node->nid . '/edit');
       $this->assertLinkByHref('node/' . $node->nid . '/delete');
     }
+
+    // Verify that the values in $_SESSION['node_overview_filter'] are valid.
+    // We will filter on the node type first and then remove the Basic page
+    // content type.
+    $this->drupalLogout();
+    $this->drupalLogin($this->admin_user);
+    $this->drupalGet('admin/content');
+    $edit = array(
+      'type' => 'page',
+    );
+    $this->drupalPost(NULL, $edit, t('Filter'));
+    $this->assertRaw(t('where %property is %value', array('%property' => t('type'), '%value' => 'Basic page')), t('Content list is filtered by content type.'));
+    $this->drupalPost('admin/structure/types/manage/page/delete', array(), t('Delete'));
+    $this->drupalGet('admin/content');
+    $this->assertNoRaw(t('where %property is', array('%property' => t('type'))), t('Content type filter has been removed.'));
   }
 }
diff --git a/core/modules/node/node.admin.inc b/core/modules/node/node.admin.inc
index 74f100c..2af3a55 100644
--- a/core/modules/node/node.admin.inc
+++ b/core/modules/node/node.admin.inc
@@ -170,7 +170,7 @@ function node_filter_form() {
     '#title' => t('Show only items where'),
     '#theme' => 'exposed_filters__node',
   );
-  foreach ($session as $filter) {
+  foreach ($session as $key => $filter) {
     list($type, $value) = $filter;
     if ($type == 'term') {
       // Load term name from DB rather than search and parse options array.
@@ -181,7 +181,13 @@ function node_filter_form() {
       $value = language_name($value);
     }
     else {
-      $value = $filters[$type]['options'][$value];
+      if (isset($filters[$type]['options'][$value])) {
+        $value = $filters[$type]['options'][$value];
+      }
+      else {
+        unset($_SESSION['node_overview_filter'][$key]);
+        continue;
+      }
     }
     $t_args = array('%property' => $filters[$type]['title'], '%value' => $value);
     if ($i++) {
