Author: pschweitzer
Date: Fri Aug 4 19:18:42 2017
New Revision: 75481
URL: http://svn.reactos.org/svn/reactos?rev=75481&view=rev
Log:
[RDBSS]
On cleanup, only take the quick path if the file was already orphaned
CORE-11327
Modified:
trunk/reactos/sdk/lib/drivers/rdbsslib/rdbss.c
Modified: trunk/reactos/sdk/lib/drivers/rdbsslib/rdbss.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/sdk/lib/drivers/rdbsslib/r…
==============================================================================
--- trunk/reactos/sdk/lib/drivers/rdbsslib/rdbss.c [iso-8859-1] (original)
+++ trunk/reactos/sdk/lib/drivers/rdbsslib/rdbss.c [iso-8859-1] Fri Aug 4 19:18:42 2017
@@ -1847,8 +1847,8 @@
Fobx->AssociatedFileObject = NULL;
- /* In case SRV_OPEN used is part of FCB */
- if (BooleanFlagOn(Fcb->FcbState, FCB_STATE_SRVOPEN_USED))
+ /* In case it was already orphaned */
+ if (BooleanFlagOn(Fcb->FcbState, FCB_STATE_ORPHANED))
{
ASSERT(Fcb->UncleanCount != 0);
InterlockedDecrement((volatile long *)&Fcb->UncleanCount);
Author: pschweitzer
Date: Fri Aug 4 19:05:11 2017
New Revision: 75480
URL: http://svn.reactos.org/svn/reactos?rev=75480&view=rev
Log:
[RXCE]
In RxRemoveNameNetFcb(), check if name was already removed. MS doesn't do this, but as we use double linked-list macros
that perform extra sanity checks, this is required. This can be called twice for a single FCB.
CORE-11327
CORE-13632
CORE-13636
Modified:
trunk/reactos/sdk/lib/drivers/rxce/rxce.c
Modified: trunk/reactos/sdk/lib/drivers/rxce/rxce.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/sdk/lib/drivers/rxce/rxce.…
==============================================================================
--- trunk/reactos/sdk/lib/drivers/rxce/rxce.c [iso-8859-1] (original)
+++ trunk/reactos/sdk/lib/drivers/rxce/rxce.c [iso-8859-1] Fri Aug 4 19:05:11 2017
@@ -7533,10 +7533,17 @@
ASSERT(RxIsFcbTableLockExclusive(&NetRoot->FcbTable));
ASSERT(RxIsFcbAcquiredExclusive(ThisFcb));
- RxFcbTableRemoveFcb(&NetRoot->FcbTable, ThisFcb);
- DPRINT("FCB (%p) %wZ removed\n", ThisFcb, &ThisFcb->FcbTableEntry.Path);
- /* Mark, so that we don't try to do it twice */
- SetFlag(ThisFcb->FcbState, FCB_STATE_NAME_ALREADY_REMOVED);
+#ifdef __REACTOS__
+ if (!BooleanFlagOn(ThisFcb->FcbState, FCB_STATE_NAME_ALREADY_REMOVED))
+ {
+#endif
+ RxFcbTableRemoveFcb(&NetRoot->FcbTable, ThisFcb);
+ DPRINT("FCB (%p) %wZ removed\n", ThisFcb, &ThisFcb->FcbTableEntry.Path);
+ /* Mark, so that we don't try to do it twice */
+ SetFlag(ThisFcb->FcbState, FCB_STATE_NAME_ALREADY_REMOVED);
+#ifdef __REACTOS__
+ }
+#endif
}
/*
Author: pschweitzer
Date: Fri Aug 4 12:18:52 2017
New Revision: 75478
URL: http://svn.reactos.org/svn/reactos?rev=75478&view=rev
Log:
[KERNEL32]
Don't leak a handle when renaming a source file which is a MS mount point or a file without the reparse attribute while we can query its reparse information.
CORE-13635
Modified:
trunk/reactos/dll/win32/kernel32/client/file/move.c
Modified: trunk/reactos/dll/win32/kernel32/client/file/move.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/client/…
==============================================================================
--- trunk/reactos/dll/win32/kernel32/client/file/move.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/kernel32/client/file/move.c [iso-8859-1] Fri Aug 4 12:18:52 2017
@@ -771,6 +771,11 @@
{
NtClose(SourceHandle);
SourceHandle = INVALID_HANDLE_VALUE;
+ }
+ else
+ {
+ /* Mount point, let's rename it */
+ AttemptReopenWithoutReparse = FALSE;
}
}