diff --git a/core/modules/node/lib/Drupal/node/NodeAccessController.php b/core/modules/node/lib/Drupal/node/NodeAccessController.php
index d7cfd2c..ff44f63 100644
--- a/core/modules/node/lib/Drupal/node/NodeAccessController.php
+++ b/core/modules/node/lib/Drupal/node/NodeAccessController.php
@@ -31,6 +31,20 @@ public function access(EntityInterface $entity, $operation, $langcode = Language
     return parent::access($entity, $operation, $langcode, $account);
   }
 
+  public function createAccess($type, $account = NULL) {
+    if (!$account) {
+      $account = $GLOBALS['user'];
+    }
+
+    $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_IGNORE;
+  }
+
   /**
    * {@inheritdoc}
    */
diff --git a/core/modules/node/node.module b/core/modules/node/node.module
index fbdf07d..8ec1e47 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);
 }
 
 /**
@@ -2501,10 +2503,6 @@ function node_node_access($node, $op, $account) {
 
   $configured_types = node_permissions_get_configured_types();
   if (isset($configured_types[$type])) {
-    if ($op == 'create' && user_access('create ' . $type . ' content', $account)) {
-      return NODE_ACCESS_ALLOW;
-    }
-
     if ($op == 'update') {
       if (user_access('edit any ' . $type . ' content', $account) || (user_access('edit own ' . $type . ' content', $account) && ($account->uid == $node->uid))) {
         return NODE_ACCESS_ALLOW;
