[MOUNTMGR]

- Fix broken logic in OnlineMountedVolumes()
- Add missing return in MountMgrNotifyNameChange()

CID #515247
CID #716002

svn path=/trunk/; revision=62664
This commit is contained in:
Pierre Schweitzer 2014-04-06 16:30:29 +00:00
parent f7bab18907
commit 369fcf0bf3
2 changed files with 7 additions and 5 deletions

View file

@ -746,10 +746,11 @@ OnlineMountedVolumes(IN PDEVICE_EXTENSION DeviceExtension,
return; return;
} }
RestartScan = TRUE;
/* Query mount points */ /* Query mount points */
while (TRUE) while (TRUE)
{ {
RestartScan = TRUE;
SymbolicName.Length = 0; SymbolicName.Length = 0;
SymbolicName.MaximumLength = sizeof(SymbolicNameBuffer); SymbolicName.MaximumLength = sizeof(SymbolicNameBuffer);
SymbolicName.Buffer = SymbolicNameBuffer; SymbolicName.Buffer = SymbolicNameBuffer;
@ -771,8 +772,7 @@ OnlineMountedVolumes(IN PDEVICE_EXTENSION DeviceExtension,
if (ReparsePointInformation.FileReference == SavedReparsePointInformation.FileReference && if (ReparsePointInformation.FileReference == SavedReparsePointInformation.FileReference &&
ReparsePointInformation.Tag == SavedReparsePointInformation.Tag) ReparsePointInformation.Tag == SavedReparsePointInformation.Tag)
{ {
ZwClose(Handle); break;
return;
} }
} }
else else
@ -782,8 +782,7 @@ OnlineMountedVolumes(IN PDEVICE_EXTENSION DeviceExtension,
if (!NT_SUCCESS(Status) || ReparsePointInformation.Tag != IO_REPARSE_TAG_MOUNT_POINT) if (!NT_SUCCESS(Status) || ReparsePointInformation.Tag != IO_REPARSE_TAG_MOUNT_POINT)
{ {
ZwClose(Handle); break;
return;
} }
/* Get the volume name associated to the mount point */ /* Get the volume name associated to the mount point */
@ -813,6 +812,8 @@ OnlineMountedVolumes(IN PDEVICE_EXTENSION DeviceExtension,
PostOnlineNotification(DeviceExtension, &VolumeDeviceInformation->SymbolicName); PostOnlineNotification(DeviceExtension, &VolumeDeviceInformation->SymbolicName);
} }
} }
ZwClose(Handle);
} }
/* /*

View file

@ -414,6 +414,7 @@ MountMgrNotifyNameChange(IN PDEVICE_EXTENSION DeviceExtension,
{ {
ObDereferenceObject(DeviceObject); ObDereferenceObject(DeviceObject);
ObDereferenceObject(FileObject); ObDereferenceObject(FileObject);
return;
} }
Stack = IoGetNextIrpStackLocation(Irp); Stack = IoGetNextIrpStackLocation(Irp);