mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 10:04:49 +00:00
Call Fs notifications at PASSIVE_LEVEL by using a guarded mutex
Use ExFreePoolWithTag instead of ExFreePool svn path=/trunk/; revision=15000
This commit is contained in:
parent
da6a50d93f
commit
e5443b9351
1 changed files with 10 additions and 10 deletions
|
@ -35,7 +35,7 @@ typedef struct _FS_CHANGE_NOTIFY_ENTRY
|
|||
static ERESOURCE FileSystemListLock;
|
||||
static LIST_ENTRY FileSystemListHead;
|
||||
|
||||
static FAST_MUTEX FsChangeNotifyListLock;
|
||||
static KGUARDED_MUTEX FsChangeNotifyListLock;
|
||||
static LIST_ENTRY FsChangeNotifyListHead;
|
||||
|
||||
#define TAG_FILE_SYSTEM TAG('F', 'S', 'Y', 'S')
|
||||
|
@ -178,7 +178,7 @@ IoInitFileSystemImplementation(VOID)
|
|||
ExInitializeResourceLite(&FileSystemListLock);
|
||||
|
||||
InitializeListHead(&FsChangeNotifyListHead);
|
||||
ExInitializeFastMutex(&FsChangeNotifyListLock);
|
||||
KeInitializeGuardedMutex(&FsChangeNotifyListLock);
|
||||
}
|
||||
|
||||
|
||||
|
@ -631,7 +631,7 @@ IoUnregisterFileSystem(IN PDEVICE_OBJECT DeviceObject)
|
|||
if (current->DeviceObject == DeviceObject)
|
||||
{
|
||||
RemoveEntryList(current_entry);
|
||||
ExFreePool(current);
|
||||
ExFreePoolWithTag(current, TAG_FILE_SYSTEM);
|
||||
ExReleaseResourceLite(&FileSystemListLock);
|
||||
KeLeaveCriticalRegion();
|
||||
IopNotifyFileSystemChange(DeviceObject, FALSE);
|
||||
|
@ -710,7 +710,7 @@ IopNotifyFileSystemChange(PDEVICE_OBJECT DeviceObject,
|
|||
PFS_CHANGE_NOTIFY_ENTRY ChangeEntry;
|
||||
PLIST_ENTRY Entry;
|
||||
|
||||
ExAcquireFastMutex(&FsChangeNotifyListLock);
|
||||
KeAcquireGuardedMutex(&FsChangeNotifyListLock);
|
||||
Entry = FsChangeNotifyListHead.Flink;
|
||||
while (Entry != &FsChangeNotifyListHead)
|
||||
{
|
||||
|
@ -720,7 +720,7 @@ IopNotifyFileSystemChange(PDEVICE_OBJECT DeviceObject,
|
|||
|
||||
Entry = Entry->Flink;
|
||||
}
|
||||
ExReleaseFastMutex(&FsChangeNotifyListLock);
|
||||
KeReleaseGuardedMutex(&FsChangeNotifyListLock);
|
||||
}
|
||||
|
||||
|
||||
|
@ -742,10 +742,10 @@ IoRegisterFsRegistrationChange(IN PDRIVER_OBJECT DriverObject,
|
|||
Entry->DriverObject = DriverObject;
|
||||
Entry->FSDNotificationProc = FSDNotificationProc;
|
||||
|
||||
ExAcquireFastMutex(&FsChangeNotifyListLock);
|
||||
KeAcquireGuardedMutex(&FsChangeNotifyListLock);
|
||||
InsertHeadList(&FsChangeNotifyListHead,
|
||||
&Entry->FsChangeNotifyList);
|
||||
ExReleaseFastMutex(&FsChangeNotifyListLock);
|
||||
KeReleaseGuardedMutex(&FsChangeNotifyListLock);
|
||||
|
||||
return(STATUS_SUCCESS);
|
||||
}
|
||||
|
@ -768,11 +768,11 @@ IoUnregisterFsRegistrationChange(IN PDRIVER_OBJECT DriverObject,
|
|||
if (ChangeEntry->DriverObject == DriverObject &&
|
||||
ChangeEntry->FSDNotificationProc == FSDNotificationProc)
|
||||
{
|
||||
ExAcquireFastMutex(&FsChangeNotifyListLock);
|
||||
KeAcquireGuardedMutex(&FsChangeNotifyListLock);
|
||||
RemoveEntryList(Entry);
|
||||
ExReleaseFastMutex(&FsChangeNotifyListLock);
|
||||
KeReleaseGuardedMutex(&FsChangeNotifyListLock);
|
||||
|
||||
ExFreePool(Entry);
|
||||
ExFreePoolWithTag(Entry, TAG_FS_CHANGE_NOTIFY);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue