[NTOS]: Revert the pool tag change from r75128, and explain in comment why we cannot actually use it.

svn path=/trunk/; revision=75133
This commit is contained in:
Hermès Bélusca-Maïto 2017-06-19 16:29:44 +00:00
parent 8820136bd2
commit 5cb03586f5

View file

@ -351,8 +351,19 @@ ObpFreeObjectNameBuffer(IN PUNICODE_STRING Name)
/* We know this is a pool-allocation if the size doesn't match */ /* We know this is a pool-allocation if the size doesn't match */
if (Name->MaximumLength != OBP_NAME_LOOKASIDE_MAX_SIZE) if (Name->MaximumLength != OBP_NAME_LOOKASIDE_MAX_SIZE)
{ {
/* Free it from the pool */ /*
ExFreePoolWithTag(Buffer, OB_NAME_TAG); * Free it from the pool.
*
* We cannot use here ExFreePoolWithTag(..., OB_NAME_TAG); , because
* the object name may have been massaged during operation by different
* object parse routines. If the latter ones have to resolve a symbolic
* link (e.g. as is done by CmpParseKey() and CmpGetSymbolicLink()),
* the original object name is freed and re-allocated from the pool,
* possibly with a different pool tag. At the end of the day, the new
* object name can be reallocated and completely different, but we
* should still be able to free it!
*/
ExFreePool(Buffer);
} }
else else
{ {