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@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/sr... ============================================================================== --- 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; }