Memory Corruption in CcopyRead

Hello Everyone,
I am encountering a memory corruption issue in my driver I have done a
detailed code review and am unable to find the cause.
This happens while I am using CcCopyRead(read) interface on a SMP machine
with W2K3 _machine> .The important thing to note is that I donot acquire any
locks(paging Io resource or the mainresource as i donot expect any
modifications) while performing these steps.
Here are the steps I perform
1.Create a StreamFileobj.Initialize caching and disable read ahead.
2.do CcCopyRead()writes/modifications etc.are in picture> in a dispatch routine
(Now there are couple of possibilities)
a)We get the valid data and continue doing CccopyRead until b) or c)
happens.
b)I start getting corrupt data now.A lot of Assert starts firing in my
code until the system crashes with c).
c)I get one of the following
Bug Check 0xC5:DRIVER_CORRUPTED_EXPOOL
Bug Check 0xC2:BAD_POOL_CALLER
3)In my equivalent commondispatch routine I simply read the data from disk
and complete the request.
now I do !process 0 7 to get a list of threads I am nowhere in stack so my
driver has done the damage.The address range which was corrupted can belong
to any
driver or component but the pool just above the corrupted range belongs to
CcVp (Cache Manager Array of Vacb pointers for a cached stream.).So how does
the cache manager synchronizes the access to the filestream for maintaining
the vacb for a stream?The problem is that this is not a very frequent thing
and sometimes the driver might just not crash< which makes it more
painfull>.

Any suggestions will be a big help and thank you for reading the mail.
regards,
Amritanshu Johri._