diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c
index c1a74f1c1f960c1e9c3da2774f0c43f6f6ba2526..804c7f647da66c798d1a6868239a00c9da1bfe2f 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.c
+++ b/dlls/ntoskrnl.exe/ntoskrnl.c
@@ -1502,9 +1502,6 @@ NTSTATUS WINAPI IoCreateDevice( DRIVER_OBJECT *driver, ULONG ext_size,
     device->DeviceType      = type;
     device->StackSize       = 1;
 
-    device->NextDevice   = driver->DeviceObject;
-    driver->DeviceObject = device;
-
     SERVER_START_REQ( create_device )
     {
         req->rootdir    = 0;
@@ -1521,6 +1518,9 @@ NTSTATUS WINAPI IoCreateDevice( DRIVER_OBJECT *driver, ULONG ext_size,
         return status;
     }
 
+    device->NextDevice   = driver->DeviceObject;
+    driver->DeviceObject = device;
+
     *ret_device = device;
     return STATUS_SUCCESS;
 }