From f8d5273e04ed7d2742fa91811895a021a74e67d6 Mon Sep 17 00:00:00 2001 From: Bill Zissimopoulos Date: Tue, 16 Feb 2016 17:02:26 -0800 Subject: [PATCH] sys: FspVolumeTransact: bug fix with bogus IRP's and DEBUGLOG's --- src/sys/volume.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/sys/volume.c b/src/sys/volume.c index 2dae5423..42cf8928 100644 --- a/src/sys/volume.c +++ b/src/sys/volume.c @@ -544,8 +544,12 @@ NTSTATUS FspVolumeTransact( ProcessIrp = FspIoqEndProcessingIrp(FsvolDeviceExtension->Ioq, (UINT_PTR)Response->Hint); if (0 == ProcessIrp) + { /* either IRP was canceled or a bogus Hint was provided */ + DEBUGLOG("BOGUS(Kind=%d, Hint=%p)", Response->Kind, (PVOID)Response->Hint); + Response = NextResponse; continue; + } ASSERT((UINT_PTR)ProcessIrp == (UINT_PTR)Response->Hint); ASSERT(FspIrpRequest(ProcessIrp)->Hint == Response->Hint); @@ -725,8 +729,9 @@ NTSTATUS FspVolumeWork( FspIrpRequest(Irp) = 0; } - DEBUGLOG("%s = %s", + DEBUGLOG("%s(Irp=%p) = %s", IoctlCodeSym(BestEffort ? FSP_FSCTL_WORK_BEST_EFFORT : FSP_FSCTL_WORK), + Irp, /* referencing pointer value, which is safe despite FspIoqPostIrpEx above! */ NtStatusSym(Result)); return Result;