[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