From 22d68eec6de654bdc6a8d5b005b86320a46ac8f0 Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Wed, 26 Sep 2012 22:03:03 -0400 Subject: [PATCH] Windows: Move afsredir process type check The process type check in afsredir.sys was performed during the Process Creation callback which is processed in the context of the parent process which might not be the same type (32-bit or 64-bit) as the process being created. Change-Id: I6ae79a6dacf434a986c7bb0135b2238fcfeeb0cd Reviewed-on: http://gerrit.openafs.org/8165 Tested-by: BuildBot Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- .../afsrdr/kernel/fs/AFSProcessSupport.cpp | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/src/WINNT/afsrdr/kernel/fs/AFSProcessSupport.cpp b/src/WINNT/afsrdr/kernel/fs/AFSProcessSupport.cpp index af87c80cd..88b7a3c87 100644 --- a/src/WINNT/afsrdr/kernel/fs/AFSProcessSupport.cpp +++ b/src/WINNT/afsrdr/kernel/fs/AFSProcessSupport.cpp @@ -372,6 +372,24 @@ AFSValidateProcessEntry( IN HANDLE ProcessId) AFSReleaseResource( pDeviceExt->Specific.Control.ProcessTree.TreeLock); +#if defined(_WIN64) + + // + // Mark the process as 64-bit if it is. + // + + if( !IoIs32bitProcess( NULL)) + { + + SetFlag( pProcessCB->Flags, AFS_PROCESS_FLAG_IS_64BIT); + } + else + { + + ClearFlag( pProcessCB->Flags, AFS_PROCESS_FLAG_IS_64BIT); + } +#endif + // // Locate the SID for the caller // @@ -832,15 +850,6 @@ AFSInitializeProcessCB( IN ULONGLONG ParentProcessId, pProcessCB->ParentProcessId = (ULONGLONG)ParentProcessId; -#if defined(_WIN64) - - if( !IoIs32bitProcess( NULL)) - { - SetFlag( pProcessCB->Flags, AFS_PROCESS_FLAG_IS_64BIT); - } - -#endif - if( pDeviceExt->Specific.Control.ProcessTree.TreeHead == NULL) { pDeviceExt->Specific.Control.ProcessTree.TreeHead = (AFSBTreeEntry *)pProcessCB; -- 2.39.5