diff --git a/core/modules/node/lib/Drupal/node/NodeAccessController.php b/core/modules/node/lib/Drupal/node/NodeAccessController.php
index d7cfd2c..5dc84d3 100644
--- a/core/modules/node/lib/Drupal/node/NodeAccessController.php
+++ b/core/modules/node/lib/Drupal/node/NodeAccessController.php
@@ -31,6 +31,23 @@ public function access(EntityInterface $entity, $operation, $langcode = Language
     return parent::access($entity, $operation, $langcode, $account);
   }
 
+  public function createAccess($type, $account = NULL) {
+    if (user_access('bypass node access', $account)) {
+      return TRUE;
+    }
+    if (!user_access('access content', $account)) {
+      return FALSE;
+    }
+
+    $configured_types = node_permissions_get_configured_types();
+    if (isset($configured_types[$type])) {
+      if (user_access('create ' . $type . ' content', $account)) {
+        return NODE_ACCESS_ALLOW;
+      }
+    }
+    return NODE_ACCESS_DENY;
+  }
+
   /**
    * {@inheritdoc}
    */
diff --git a/core/modules/node/node.module b/core/modules/node/node.module
index fbdf07d..ebe8704 100644
--- a/core/modules/node/node.module
+++ b/core/modules/node/node.module
@@ -2462,9 +2462,11 @@ function node_form_system_themes_admin_form_submit($form, &$form_state) {
  * @see node_menu()
  */
 function node_access($op, $node, $account = NULL, $langcode = NULL) {
+  $access_controller = entity_access_controller('node');
+
   if (!$node instanceof EntityInterface) {
     $type = is_object($node) ? $node->type : $node;
-    $node = entity_create('node', array('type' => $type));
+    return $access_controller->createAccess($type, $account);
   }
 
   // If no language code was provided, default to the node's langcode.
@@ -2490,7 +2492,7 @@ function node_access($op, $node, $account = NULL, $langcode = NULL) {
     $account = user_load($account->uid);
   }
 
-  return entity_access_controller('node')->access($node, $op, $langcode, $account);
+  return $access_controller->access($node, $op, $langcode, $account);
 }
 
 /**
