Gge wrote:
With svn 14668 , Ros bugchecks when I click on the
"my computer " icon
and o then on the "C" disk drive icon as per debug messages below.
This is a regression and it is always reproductible .
I cannot say exactly when it has been broken.
Any idea ?
It may be a result of my changes in 14418. The mdl is only allocated if
the read/write length is greater 0. Can you add my patch and try it again?
- Hartmut
------------------------------------------------------------------------
Index: drivers/fs/vfat/rw.c
===================================================================
--- drivers/fs/vfat/rw.c (revision 14480)
+++ drivers/fs/vfat/rw.c (working copy)
@@ -617,6 +617,7 @@
}
if (Length == 0)
{
+ DPRINT1("Length is 0\n");
IrpContext->Irp->IoStatus.Information = 0;
Status = STATUS_SUCCESS;
goto ByeBye;
Index: ntoskrnl/io/cleanup.c
===================================================================
--- ntoskrnl/io/cleanup.c (revision 14480)
+++ ntoskrnl/io/cleanup.c (working copy)
@@ -1,4 +1,4 @@
-/* $Id:$
+/* $Id$
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
@@ -109,7 +109,10 @@
if (DeviceObject->Flags & DO_DIRECT_IO)
{
- IoFreeMdl(Irp->MdlAddress);
+ if (Irp->MdlAddress)
+ {
+ IoFreeMdl(Irp->MdlAddress);
+ }
}
}
------------------------------------------------------------------------
Thanks Harmut,
I have tested successfully your path with an additional fix from Royce3
below.
These fixes can be committed
Regards
Gerard
-------------- Royce3 patch -------------------------------
/*
* @implemented
*/
VOID STDCALL
IoFreeMdl(PMDL Mdl)
{
/*
* This unmaps partial mdl's from kernel space but also asserts that
non-partial
* mdl's isn't still mapped into kernel space.
*/
ASSERT(Mdl);
ASSERT_IRQL(DISPATCH_LEVEL);
MmPrepareMdlForReuse(Mdl);
ExFreePool(Mdl);
}