From 912703cd7769fd447028842d7fecf09d25a4dfe6 Mon Sep 17 00:00:00 2001 From: Bill Zissimopoulos Date: Fri, 30 Oct 2020 15:39:56 -0700 Subject: [PATCH] sys: FspBufferUserBuffer: special case Irp->UserBuffer kernel address --- src/sys/util.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/sys/util.c b/src/sys/util.c index 58d26a81..da27bc62 100644 --- a/src/sys/util.c +++ b/src/sys/util.c @@ -608,6 +608,13 @@ NTSTATUS FspBufferUserBuffer(PIRP Irp, ULONG Length, LOCK_OPERATION Operation) if (0 == Length || 0 != Irp->AssociatedIrp.SystemBuffer) return STATUS_SUCCESS; + if (KernelMode == Irp->RequestorMode && + (PUINT8)MM_SYSTEM_RANGE_START <= (PUINT8)Irp->UserBuffer) + { + Irp->AssociatedIrp.SystemBuffer = Irp->UserBuffer; + return STATUS_SUCCESS; + } + PVOID SystemBuffer = FspAllocNonPagedExternal(Length); if (0 == SystemBuffer) return STATUS_INSUFFICIENT_RESOURCES;