From 2772af5478b69f98e75abdf534c7cbbf4be685c8 Mon Sep 17 00:00:00 2001 From: Bill Zissimopoulos Date: Sat, 12 Nov 2016 12:06:28 -0800 Subject: [PATCH] sys: FspWqOplockPrepare: use work routine --- src/sys/lockctl.c | 2 +- src/sys/wq.c | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/sys/lockctl.c b/src/sys/lockctl.c index 5627362c..d99e040d 100644 --- a/src/sys/lockctl.c +++ b/src/sys/lockctl.c @@ -51,7 +51,7 @@ static NTSTATUS FspFsvolLockControlRetry( /* perform oplock check; we are only implementing Win7 behavior */ Result = FspCheckOplock(FspFileNodeAddrOfOplock(FileNode), Irp, - 0, FspWqOplockComplete, FspWqOplockPrepare); + (PVOID)(UINT_PTR)FspFsvolLockControlRetry, FspWqOplockComplete, FspWqOplockPrepare); if (STATUS_PENDING == Result) { FspFileNodeRelease(FileNode, Main); diff --git a/src/sys/wq.c b/src/sys/wq.c index 2b9e4005..5073d1f0 100644 --- a/src/sys/wq.c +++ b/src/sys/wq.c @@ -176,7 +176,10 @@ VOID FspWqOplockPrepare(PVOID Context, PIRP Irp) NTSTATUS Result; - Result = FspWqPrepareIrpWorkItem(Irp); + FSP_FSCTL_STATIC_ASSERT(sizeof(PVOID) == sizeof(VOID (*)(VOID)), + "Data and code pointers must have same size!"); + + Result = FspWqCreateAndPostIrpWorkItem(Irp, (FSP_IOP_REQUEST_WORK *)(UINT_PTR)Context, 0, TRUE); if (!NT_SUCCESS(Result)) /* * Only way to communicate failure is through ExRaiseStatus.