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)