From: Jeffrey Altman Date: Thu, 27 Sep 2012 02:03:03 +0000 (-0400) Subject: Windows: Move afsredir process type check X-Git-Tag: upstream/1.8.0_pre1^2~1952 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=22d68eec6de654bdc6a8d5b005b86320a46ac8f0;p=packages%2Fo%2Fopenafs.git 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 --- 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;