From 78cd6265d97f635d6e19a109e58250d038b0ce10 Mon Sep 17 00:00:00 2001 From: Joachim Henze Date: Mon, 17 Dec 2018 00:14:06 +0100 Subject: [PATCH] [0.4.11] Revert "[NTOSKRNL] Properly align VACB writes" to avoid CORE-15384 "ros corrupts FAT16 partition" This reverts commit 0.4.11-dev-210-g 2a80ae2bb6fdb4135d41244335caa2dadb6c8fa9 --- ntoskrnl/cc/copy.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/ntoskrnl/cc/copy.c b/ntoskrnl/cc/copy.c index 4509e2e43b7..78c6553d8ad 100644 --- a/ntoskrnl/cc/copy.c +++ b/ntoskrnl/cc/copy.c @@ -81,7 +81,7 @@ NTAPI CcReadVirtualAddress ( PROS_VACB Vacb) { - ULONG Size; + ULONG Size, Pages; PMDL Mdl; NTSTATUS Status; IO_STATUS_BLOCK IoStatus; @@ -95,11 +95,10 @@ CcReadVirtualAddress ( } Size = LargeSize.LowPart; - Size = ROUND_TO_PAGES(Size); - ASSERT(Size <= VACB_MAPPING_GRANULARITY); - ASSERT(Size > 0); + Pages = BYTES_TO_PAGES(Size); + ASSERT(Pages * PAGE_SIZE <= VACB_MAPPING_GRANULARITY); - Mdl = IoAllocateMdl(Vacb->BaseAddress, Size, FALSE, FALSE, NULL); + Mdl = IoAllocateMdl(Vacb->BaseAddress, Pages * PAGE_SIZE, FALSE, FALSE, NULL); if (!Mdl) { return STATUS_INSUFFICIENT_RESOURCES; @@ -178,10 +177,6 @@ CcWriteVirtualAddress ( } while (++i < (Size >> PAGE_SHIFT)); } - Size = ROUND_TO_PAGES(Size); - ASSERT(Size <= VACB_MAPPING_GRANULARITY); - ASSERT(Size > 0); - Mdl = IoAllocateMdl(Vacb->BaseAddress, Size, FALSE, FALSE, NULL); if (!Mdl) {