mirror of
https://github.com/reactos/reactos.git
synced 2024-09-28 13:34:53 +00:00
[NTOSKRNL] In FsRtlAddToTunnelCache() allocate memory from PagedPool when required.
Also, if allocating from lookaside list, reattempt a cold allocation.
This commit is contained in:
parent
cb8cc0d098
commit
2abb99faa9
|
@ -346,7 +346,7 @@ FsRtlAddToTunnelCache(IN PTUNNEL Cache,
|
|||
IN ULONG DataLength,
|
||||
IN PVOID Data)
|
||||
{
|
||||
PTUNNEL_NODE_ENTRY NodeEntry;
|
||||
PTUNNEL_NODE_ENTRY NodeEntry = NULL;
|
||||
PRTL_SPLAY_LINKS CurEntry, LastEntry;
|
||||
ULONG Length;
|
||||
LONG Result = 0;
|
||||
|
@ -384,25 +384,26 @@ FsRtlAddToTunnelCache(IN PTUNNEL Cache,
|
|||
Length += LongName->Length;
|
||||
}
|
||||
|
||||
if (Length > DEFAULT_ENTRY_SIZE)
|
||||
{
|
||||
/* bigger than default entry */
|
||||
NodeEntry = ExAllocatePool(NonPagedPool, Length);
|
||||
AllocatedFromPool = TRUE;
|
||||
}
|
||||
else
|
||||
if (Length <= DEFAULT_ENTRY_SIZE)
|
||||
{
|
||||
/* get standard entry */
|
||||
NodeEntry = ExAllocateFromPagedLookasideList(&TunnelLookasideList);
|
||||
}
|
||||
|
||||
if (NodeEntry == NULL)
|
||||
{
|
||||
/* bigger than default entry or allocation failed */
|
||||
NodeEntry = ExAllocatePool(PagedPool | POOL_COLD_ALLOCATION, Length);
|
||||
/* check for success */
|
||||
if (!NodeEntry)
|
||||
if (NodeEntry == NULL)
|
||||
{
|
||||
/* out of memory */
|
||||
return;
|
||||
}
|
||||
|
||||
AllocatedFromPool = TRUE;
|
||||
}
|
||||
|
||||
/* acquire lock */
|
||||
ExAcquireFastMutex(&Cache->Mutex);
|
||||
|
||||
|
|
Loading…
Reference in a new issue