Hartmut Birr wrote:
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); }