It is generally considered a good idea to release a fast mutex in the same order that you acquired it, since acquiring at passive->apc and apc->apc does not bode well when you release to apc->passive. passive->apc. This fixes the npfs bug on vmware, lowering the total npfs bug count to a mere 42.
Modified: trunk/reactos/drivers/fs/np/create.c

Modified: trunk/reactos/drivers/fs/np/create.c
--- trunk/reactos/drivers/fs/np/create.c	2005-11-20 08:41:46 UTC (rev 19356)
+++ trunk/reactos/drivers/fs/np/create.c	2005-11-20 08:46:09 UTC (rev 19357)
@@ -618,13 +618,13 @@
       KeSetEvent(&OtherSide->WriteEvent, IO_NO_INCREMENT, FALSE);
       if (Server)
       {
+         ExReleaseFastMutex(&OtherSide->DataListLock);
          ExReleaseFastMutex(&Fcb->DataListLock);
-	 ExReleaseFastMutex(&OtherSide->DataListLock);
       }
       else
       {
-	 ExReleaseFastMutex(&OtherSide->DataListLock);
-	 ExReleaseFastMutex(&Fcb->DataListLock);
+          ExReleaseFastMutex(&Fcb->DataListLock);
+          ExReleaseFastMutex(&OtherSide->DataListLock);
       }
    }
    else if (Fcb->PipeState == FILE_PIPE_LISTENING_STATE)