From f493a652b28e5e5606e0ec6741b884545b5d1902 Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Fri, 15 Mar 2013 11:40:29 -0400 Subject: [PATCH] Windows: Increase AFS DeviceObject StackSize Increase the StackSize parameter of the DeviceObjects allocated by the AFS Redirector framework. The StackSize parameter is used to notify callers how many Irp Stack frames will be consumed. Now that the redirector is using IoCompletion routines, an additional stack frame is required to handle calls to the AFS Redirector library driver. Thanks to Peter Scott for identifying the solution. FIXES 131618 Change-Id: Ib66f884911f0d425e6e07f338a36b3ebedeb8871 Reviewed-on: http://gerrit.openafs.org/9609 Reviewed-by: Peter Scott Tested-by: BuildBot Reviewed-by: Rod Widdowson Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- src/WINNT/afsrdr/kernel/fs/AFSGeneric.cpp | 8 ++++++++ src/WINNT/afsrdr/kernel/fs/AFSRDRSupport.cpp | 7 +++++++ 2 files changed, 15 insertions(+) diff --git a/src/WINNT/afsrdr/kernel/fs/AFSGeneric.cpp b/src/WINNT/afsrdr/kernel/fs/AFSGeneric.cpp index a996262..5433480 100644 --- a/src/WINNT/afsrdr/kernel/fs/AFSGeneric.cpp +++ b/src/WINNT/afsrdr/kernel/fs/AFSGeneric.cpp @@ -808,6 +808,14 @@ AFSInitializeControlDevice() pDeviceExt->Specific.Control.AuthGroupTree.TreeLock = &pDeviceExt->Specific.Control.AuthGroupTreeLock; pDeviceExt->Specific.Control.AuthGroupTree.TreeHead = NULL; + + // + // Increase the StackSize to support the extra stack frame required + // for use of IoCompletion routines. + // + + AFSDeviceObject->StackSize++; + } return ntStatus; diff --git a/src/WINNT/afsrdr/kernel/fs/AFSRDRSupport.cpp b/src/WINNT/afsrdr/kernel/fs/AFSRDRSupport.cpp index 4fd6172..05372eb 100644 --- a/src/WINNT/afsrdr/kernel/fs/AFSRDRSupport.cpp +++ b/src/WINNT/afsrdr/kernel/fs/AFSRDRSupport.cpp @@ -132,6 +132,13 @@ AFSInitRDRDevice() AFSRDRDeviceObject->Flags &= ~DO_DEVICE_INITIALIZING; // + // Increase the StackSize to support the extra stack frame required + // for use of IoCompletion routines. + // + + AFSRDRDeviceObject->StackSize++; + + // // Register this device with MUP with FilterMgr if Vista or above // -- 1.9.4