From 8f25dd6cab2dad2b95c1101922e852b5b7506eed Mon Sep 17 00:00:00 2001 From: Bill Zissimopoulos Date: Fri, 30 Dec 2016 15:36:06 -0800 Subject: [PATCH] sys: FspIopCompleteIrpEx: - only update statistics if we actually have a reference to the DeviceObject --- src/sys/iop.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/sys/iop.c b/src/sys/iop.c index d0d837a1..58f466ad 100644 --- a/src/sys/iop.c +++ b/src/sys/iop.c @@ -288,18 +288,22 @@ VOID FspIopCompleteIrpEx(PIRP Irp, NTSTATUS Result, BOOLEAN DeviceDereference) */ if (IRP_MJ_CREATE == IrpSp->MajorFunction) { - FSP_DEVICE_EXTENSION *DeviceExtension = FspDeviceExtension(DeviceObject); - - if (FspFsvolDeviceExtensionKind == FspDeviceExtension(DeviceObject)->Kind) + /* only update statistics if we actually have a reference to the DeviceObject */ + if (DeviceDereference) { - FSP_STATISTICS *Statistics = FspStatistics( - ((FSP_FSVOL_DEVICE_EXTENSION *)DeviceExtension)->Statistics); + FSP_DEVICE_EXTENSION *DeviceExtension = FspDeviceExtension(DeviceObject); - FspStatisticsInc(Statistics, Specific.CreateHits); - if (STATUS_SUCCESS == Result) - FspStatisticsInc(Statistics, Specific.SuccessfulCreates); - else - FspStatisticsInc(Statistics, Specific.FailedCreates); + if (FspFsvolDeviceExtensionKind == FspDeviceExtension(DeviceObject)->Kind) + { + FSP_STATISTICS *Statistics = FspStatistics( + ((FSP_FSVOL_DEVICE_EXTENSION *)DeviceExtension)->Statistics); + + FspStatisticsInc(Statistics, Specific.CreateHits); + if (STATUS_SUCCESS == Result) + FspStatisticsInc(Statistics, Specific.SuccessfulCreates); + else + FspStatisticsInc(Statistics, Specific.FailedCreates); + } } } else