Author: fireball Date: Tue Oct 14 08:56:58 2008 New Revision: 36747
URL: http://svn.reactos.org/svn/reactos?rev=36747&view=rev Log: - Don't pass CMP_LOCK_HASHES_FOR_KCB flag because no locking is perform in CmpBuildHashStackAndLookupCache, fixes an assert when trying to unlock not locked object. - Add a hack (one and only one) for the MaxNameLen being different in KCB and actual KeyNode to allow regression testing framework go further.
Modified: trunk/reactos/ntoskrnl/config/cmparse.c
Modified: trunk/reactos/ntoskrnl/config/cmparse.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/config/cmparse.c?r... ============================================================================== --- trunk/reactos/ntoskrnl/config/cmparse.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/config/cmparse.c [iso-8859-1] Tue Oct 14 08:56:58 2008 @@ -339,7 +339,7 @@ *KeyCell, KeyNode, ParentKcb, - CMP_LOCK_HASHES_FOR_KCB, + 0, // CMP_LOCK_HASHES_FOR_KCB, Name); if (!Kcb) { @@ -492,7 +492,16 @@ ASSERT(KeyBody->KeyControlBlock->ParentKcb->KeyCell == Cell); ASSERT(KeyBody->KeyControlBlock->ParentKcb->KeyHive == Hive); ASSERT(KeyBody->KeyControlBlock->ParentKcb == ParentKcb); - ASSERT(KeyBody->KeyControlBlock->ParentKcb->KcbMaxNameLen == KeyNode->MaxNameLen); + //ASSERT(KeyBody->KeyControlBlock->ParentKcb->KcbMaxNameLen == KeyNode->MaxNameLen); + if (KeyBody->KeyControlBlock->ParentKcb->KcbMaxNameLen != KeyNode->MaxNameLen) + { + /* HACK: this gets unsynced due to (?) mismatching KCB referencing */ + DPRINT1("BUG: KCB MaxNameLen %d does not match KeyNode's MaxNameLen %d!\n", + KeyBody->KeyControlBlock->ParentKcb->KcbMaxNameLen, KeyNode->MaxNameLen); + + /* Manually sync MaxNameLens, remove once fixed */ + KeyBody->KeyControlBlock->ParentKcb->KcbMaxNameLen = KeyNode->MaxNameLen; + }
/* Update the timestamp */ KeQuerySystemTime(&TimeStamp);