Author: pschweitzer
Date: Wed Feb 29 19:43:35 2012
New Revision: 55932
URL: http://svn.reactos.org/svn/reactos?rev=55932&view=rev
Log:
[NTOSKRNL]
Fix a bug in FsRtlNotifyCleanup: only remove notification from list when we're about to complete it.
Modified:
trunk/reactos/ntoskrnl/fsrtl/notify.c
Modified: trunk/reactos/ntoskrnl/fsrtl/notify.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/fsrtl/notify.c?re…
==============================================================================
--- trunk/reactos/ntoskrnl/fsrtl/notify.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/fsrtl/notify.c [iso-8859-1] Wed Feb 29 19:43:35 2012
@@ -182,12 +182,13 @@
{
FsRtlNotifyCompleteIrpList(NotifyChange, STATUS_NOTIFY_CLEANUP);
}
- /* Remove from the list */
- RemoveEntryList(&NotifyChange->NotifyList);
-
- /* Downcrease reference number and if 0 is reached, it's time to do complete cleanup */
+
+ /* Decrease reference number and if 0 is reached, it's time to do complete cleanup */
if (!InterlockedDecrement((PLONG)&(NotifyChange->ReferenceCount)))
{
+ /* Remove it from the notifications list */
+ RemoveEntryList(&NotifyChange->NotifyList);
+
/* In case there was an allocated buffer, free it */
if (NotifyChange->AllocatedBuffer)
{
Author: pschweitzer
Date: Wed Feb 29 19:26:43 2012
New Revision: 55930
URL: http://svn.reactos.org/svn/reactos?rev=55930&view=rev
Log:
[NTOSKRNL]
Use LIST_ENTRY not pointer on them as head
Modified:
trunk/reactos/ntoskrnl/fsrtl/notify.c
trunk/reactos/ntoskrnl/include/internal/fsrtl.h
Modified: trunk/reactos/ntoskrnl/fsrtl/notify.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/fsrtl/notify.c?re…
==============================================================================
--- trunk/reactos/ntoskrnl/fsrtl/notify.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/fsrtl/notify.c [iso-8859-1] Wed Feb 29 19:26:43 2012
@@ -178,12 +178,12 @@
NotifyChange->Flags |= CLEANUP_IN_PROCESS;
/* If there are pending IRPs, complete them using the STATUS_NOTIFY_CLEANUP status */
- if (!IsListEmpty(NotifyChange->NotifyIrps))
+ if (!IsListEmpty(&NotifyChange->NotifyIrps))
{
FsRtlNotifyCompleteIrpList(NotifyChange, STATUS_NOTIFY_CLEANUP);
}
/* Remove from the list */
- RemoveEntryList(NotifyChange->NotifyList);
+ RemoveEntryList(&NotifyChange->NotifyList);
/* Downcrease reference number and if 0 is reached, it's time to do complete cleanup */
if (!InterlockedDecrement((PLONG)&(NotifyChange->ReferenceCount)))
Modified: trunk/reactos/ntoskrnl/include/internal/fsrtl.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/internal/…
==============================================================================
--- trunk/reactos/ntoskrnl/include/internal/fsrtl.h [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/include/internal/fsrtl.h [iso-8859-1] Wed Feb 29 19:26:43 2012
@@ -75,8 +75,8 @@
PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback;
PSECURITY_SUBJECT_CONTEXT SubjectContext;
PSTRING FullDirectoryName;
- PLIST_ENTRY NotifyList;
- PLIST_ENTRY NotifyIrps;
+ LIST_ENTRY NotifyList;
+ LIST_ENTRY NotifyIrps;
PFILTER_REPORT_CHANGE FilterCallback;
USHORT Flags;
UCHAR CharacterSize;