[ros-dev] NTOSKRNL bugcheck when clicking on "My Computer C disk
icon" = FIXED
Gge
gerard.gatineau at laposte.net
Mon Apr 4 21:12:40 CEST 2005
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);
}
More information about the Ros-dev
mailing list