From 56cc2ca11592fd2846c1daa6ca7414aa7bc71f8a Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Tue, 31 Oct 2017 15:44:39 +0100 Subject: [PATCH] [SERIAL] Fix Serial{Get,Clear}PerfStats() to become proper PKSYNCHRONIZE_ROUTINE routines and get rid of the related casts. Brought to you by Thomas Faber. CORE-11799 (#94) --- drivers/serial/serial/devctrl.c | 53 +++++++++++++++++---------------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/drivers/serial/serial/devctrl.c b/drivers/serial/serial/devctrl.c index 189f97eba24..74b81395c34 100644 --- a/drivers/serial/serial/devctrl.c +++ b/drivers/serial/serial/devctrl.c @@ -158,36 +158,37 @@ SerialSetLineControl( return Status; } -static BOOLEAN -SerialClearPerfStats( - IN PSERIAL_DEVICE_EXTENSION DeviceExtension) +static +BOOLEAN +NTAPI +SerialClearPerfStats(IN PVOID SynchronizeContext) { - ASSERT(DeviceExtension); - - RtlZeroMemory(&DeviceExtension->SerialPerfStats, sizeof(SERIALPERF_STATS)); - DeviceExtension->BreakInterruptErrorCount = 0; - return TRUE; + PSERIAL_DEVICE_EXTENSION DeviceExtension = SynchronizeContext; + ASSERT(DeviceExtension); + RtlZeroMemory(&DeviceExtension->SerialPerfStats, sizeof(SERIALPERF_STATS)); + DeviceExtension->BreakInterruptErrorCount = 0; + return TRUE; } -static BOOLEAN -SerialGetPerfStats(IN PIRP pIrp) +static +BOOLEAN +NTAPI +SerialGetPerfStats(IN PVOID SynchronizeContext) { - PSERIAL_DEVICE_EXTENSION pDeviceExtension; + PIRP pIrp = SynchronizeContext; + PSERIAL_DEVICE_EXTENSION pDeviceExtension; - ASSERT(pIrp); - pDeviceExtension = (PSERIAL_DEVICE_EXTENSION) - IoGetCurrentIrpStackLocation(pIrp)->DeviceObject->DeviceExtension; + ASSERT(pIrp); + pDeviceExtension = IoGetCurrentIrpStackLocation(pIrp)->DeviceObject->DeviceExtension; - /* - * we assume buffer is big enough to hold SerialPerfStats structure - * caller must verify this - */ - RtlCopyMemory( - pIrp->AssociatedIrp.SystemBuffer, - &pDeviceExtension->SerialPerfStats, - sizeof(SERIALPERF_STATS) - ); - return TRUE; + /* + * we assume buffer is big enough to hold SerialPerfStats structure + * caller must verify this + */ + RtlCopyMemory(pIrp->AssociatedIrp.SystemBuffer, + &pDeviceExtension->SerialPerfStats, + sizeof(SERIALPERF_STATS)); + return TRUE; } static NTSTATUS @@ -309,7 +310,7 @@ SerialDeviceControl( TRACE_(SERIAL, "IOCTL_SERIAL_CLEAR_STATS\n"); KeSynchronizeExecution( DeviceExtension->Interrupt, - (PKSYNCHRONIZE_ROUTINE)SerialClearPerfStats, + SerialClearPerfStats, DeviceExtension); Status = STATUS_SUCCESS; break; @@ -519,7 +520,7 @@ SerialDeviceControl( else { KeSynchronizeExecution(DeviceExtension->Interrupt, - (PKSYNCHRONIZE_ROUTINE)SerialGetPerfStats, Irp); + SerialGetPerfStats, Irp); Information = sizeof(SERIALPERF_STATS); Status = STATUS_SUCCESS; }