[ros-dev] [ros-diffs] [dgorbachev] 42569: Do not call CcUnpinData() with NULL PtrBCB.

Filip Navara filip.navara at gmail.com
Sun Aug 9 20:02:03 CEST 2009


This is very wrong!

PtrBCB should never ever be NULL... and if it is then it means that
CcMapData few lines above failed. In fact the whole chunk of code is
wrong. CcMapData return value is not properly checked. If it got far
enough that CcUnpinData crashed then
PtrParentFCB->NTRequiredFCB.CommonFCBHeader.FileSize == 0 and
obviously the mapping will fail. This case can easily be checked
without even attempting to map the data...

Best regards,
Filip Navara

On Sun, Aug 9, 2009 at 7:26 PM, <dgorbachev at svn.reactos.org> wrote:
> Author: dgorbachev
> Date: Sun Aug  9 19:26:10 2009
> New Revision: 42569
>
> URL: http://svn.reactos.org/svn/reactos?rev=42569&view=rev
> Log:
> Do not call CcUnpinData() with NULL PtrBCB.
>
> Modified:
>    trunk/reactos/drivers/filesystems/ext2/src/create.c
>
> Modified: trunk/reactos/drivers/filesystems/ext2/src/create.c
> URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/ext2/src/create.c?rev=42569&r1=42568&r2=42569&view=diff
> ==============================================================================
> --- trunk/reactos/drivers/filesystems/ext2/src/create.c [iso-8859-1] (original)
> +++ trunk/reactos/drivers/filesystems/ext2/src/create.c [iso-8859-1] Sun Aug  9 19:26:10 2009
> @@ -1410,8 +1410,12 @@
>                        }
>                }
>
> -               CcUnpinData( PtrBCB );
> -               PtrBCB = NULL;
> +               // FIXME
> +               if( PtrBCB )
> +               {
> +                       CcUnpinData( PtrBCB );
> +                       PtrBCB = NULL;
> +               }
>
>                return InodeNo;
>        }
>
>
>



More information about the Ros-dev mailing list