If AFSInitializeProcessCB() fails in AFSProcessCreate() it can
lead to a recursive loop of AFSValidateProcessEntry() ->
AFSProcessCreate() calls. Only call AFSValidateProcessEntry()
if AFSInitializeProcessCB() succeeds. On failure, log an error
to the trace log.
Change-Id: I67a65bed9a3193a5ce44eb01d30aed15fe9e469d
Reviewed-on: http://gerrit.openafs.org/7309
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Chas Williams - CONTRACTOR <chas@cmf.nrl.navy.mil>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>
pProcessCB->CreatingProcessId = (ULONGLONG)CreatingProcessId;
pProcessCB->CreatingThreadId = (ULONGLONG)CreatingThreadId;
- }
- //
- // Now assign the AuthGroup ACE
- //
+ //
+ // Now assign the AuthGroup ACE
+ //
+
+ AFSValidateProcessEntry( ProcessId);
+ }
+ else
+ {
- AFSValidateProcessEntry( ProcessId);
+ AFSDbgLogMsg( AFS_SUBSYSTEM_PROCESS_PROCESSING,
+ AFS_TRACE_LEVEL_ERROR,
+ "AFSProcessCreate Initialization failure for Parent %08lX Process %08lX %08lX\n",
+ ParentId,
+ ProcessId,
+ PsGetCurrentThread());
+ }
AFSReleaseResource( pDeviceExt->Specific.Control.ProcessTree.TreeLock);
}