failing in read operation while developing layered file system

Tyring to develp a layered file system which maintains its own cache
management and for Paging IO and Non Cache IO it will talk to low level file
syste.

Everything is working fine.

But when a file is data is read from the file for the first read operation
it is working fine but for second read operatoin on the file object, System
is going into BSOD.

When I tried to debug the crash dump using WinDbg it shows:

BugCheck 8E, {c0000005, 805708ea, f7827c20, 0}

STACK_TEXT:

WARNING: Stack unwind information not available. Following frames may be
wrong.

f78627e8 804fc973 0000008e c0000005 805708ea nt!KeBugCheckEx+0x1b

f7862bb0 8053d251 f7862bcc 00000000 f7862c20 nt!KeRaiseUserException+0xc29

f7862c38 8060322f e16eefb8 8161d020 f7862c6c nt!Kei386EoiHelper+0x1d9

f7862d38 8053c808 000000d0 00000000 00000000 nt!ExEnumHandleTable+0x5a3

f7862ddc 80540fa2 f96ebb85 8161ded0 00000000
nt!KeReleaseInStackQueuedSpinLockFromDpcLevel+0xb14

f7862ecc bf8141ea 00000000 f7862c68 e115e000 nt!KiDispatchInterrupt+0x5a2

00000000 00000000 00000000 00000000 00000000 win32k!EngDeleteSurface+0x40ba

STACK_COMMAND: kb

FOLLOWUP_IP:

win32k!EngDeleteSurface+40ba

bf8141ea c3 ret

SYMBOL_STACK_INDEX: 6

SYMBOL_NAME: win32k!EngDeleteSurface+40ba

FOLLOWUP_NAME: MachineOwner

IMAGE_NAME: win32k.sys

I am initializing cache on file object in read operation if PrivateCacheMap
of file object is null and I am using locks while checking this variable.

This issue is not reproduced if I disable the cache and read from low level
file system.

Can any one help me in understanding the issue.

Thanks,

VC