mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 06:43:01 +00:00
- Add missing critical region acquiring to the VfatShutdown routine.
- Remove that irql <= PASSIVE_LEVEL check, always entering the critical region. And for vfat calls with an unusual high irql leave a DPRINT. svn path=/trunk/; revision=31736
This commit is contained in:
parent
cd8742fff2
commit
455c9a6b04
2 changed files with 8 additions and 13 deletions
|
@ -142,7 +142,6 @@ NTSTATUS NTAPI VfatBuildRequest (
|
||||||
{
|
{
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
PVFAT_IRP_CONTEXT IrpContext;
|
PVFAT_IRP_CONTEXT IrpContext;
|
||||||
KIRQL Irql;
|
|
||||||
|
|
||||||
DPRINT ("VfatBuildRequest (DeviceObject %p, Irp %p)\n", DeviceObject, Irp);
|
DPRINT ("VfatBuildRequest (DeviceObject %p, Irp %p)\n", DeviceObject, Irp);
|
||||||
|
|
||||||
|
@ -157,22 +156,14 @@ NTSTATUS NTAPI VfatBuildRequest (
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Irql = KeGetCurrentIrql();
|
if (KeGetCurrentIrql() > PASSIVE_LEVEL)
|
||||||
if (Irql <= PASSIVE_LEVEL)
|
|
||||||
{
|
|
||||||
FsRtlEnterFileSystem();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
DPRINT1("Vfat is entered at irql = %d\n", Irql);
|
DPRINT1("Vfat is entered at irql = %d\n", Irql);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FsRtlEnterFileSystem();
|
||||||
Status = VfatDispatchRequest (IrpContext);
|
Status = VfatDispatchRequest (IrpContext);
|
||||||
|
FsRtlExitFileSystem();
|
||||||
if (Irql <= PASSIVE_LEVEL)
|
|
||||||
{
|
|
||||||
FsRtlExitFileSystem();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,6 +51,8 @@ VfatShutdown(PDEVICE_OBJECT DeviceObject, PIRP Irp)
|
||||||
|
|
||||||
DPRINT("VfatShutdown(DeviceObject %p, Irp %p)\n",DeviceObject, Irp);
|
DPRINT("VfatShutdown(DeviceObject %p, Irp %p)\n",DeviceObject, Irp);
|
||||||
|
|
||||||
|
FsRtlEnterFileSystem();
|
||||||
|
|
||||||
/* FIXME: block new mount requests */
|
/* FIXME: block new mount requests */
|
||||||
|
|
||||||
if (DeviceObject == VfatGlobalData->DeviceObject)
|
if (DeviceObject == VfatGlobalData->DeviceObject)
|
||||||
|
@ -108,6 +110,8 @@ VfatShutdown(PDEVICE_OBJECT DeviceObject, PIRP Irp)
|
||||||
Irp->IoStatus.Information = 0;
|
Irp->IoStatus.Information = 0;
|
||||||
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
||||||
|
|
||||||
|
FsRtlExitFileSystem();
|
||||||
|
|
||||||
return(Status);
|
return(Status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue