mirror of
https://github.com/reactos/reactos.git
synced 2024-10-05 00:43:21 +00:00
[NPFS-NEW]: Fix a bug in NpRemoveDataQueueEntry.
[NPFS-NEW]: Fix busted up NpGetNextRealDataQueueEntry and fix its usage. These changes don't appear to "fix" any tests, but they were real bugs. Thanks to ThFabba. svn path=/trunk/; revision=60068
This commit is contained in:
parent
fb79499369
commit
6f65345379
|
@ -126,7 +126,9 @@ NpRemoveDataQueueEntry(IN PNP_DATA_QUEUE DataQueue,
|
|||
--DataQueue->EntriesInQueue;
|
||||
|
||||
HasWrites = 1;
|
||||
if (!DataQueue->QueueState != WriteEntries || DataQueue->QuotaUsed < DataQueue->Quota || !QueueEntry->QuotaInEntry)
|
||||
if (DataQueue->QueueState != WriteEntries ||
|
||||
DataQueue->QuotaUsed < DataQueue->Quota ||
|
||||
!QueueEntry->QuotaInEntry)
|
||||
{
|
||||
HasWrites = 0;
|
||||
}
|
||||
|
@ -164,7 +166,7 @@ NpRemoveDataQueueEntry(IN PNP_DATA_QUEUE DataQueue,
|
|||
return Irp;
|
||||
}
|
||||
|
||||
PNP_DATA_QUEUE_ENTRY
|
||||
PLIST_ENTRY
|
||||
NTAPI
|
||||
NpGetNextRealDataQueueEntry(IN PNP_DATA_QUEUE DataQueue,
|
||||
IN PLIST_ENTRY List)
|
||||
|
@ -175,10 +177,9 @@ NpGetNextRealDataQueueEntry(IN PNP_DATA_QUEUE DataQueue,
|
|||
PLIST_ENTRY NextEntry;
|
||||
PAGED_CODE();
|
||||
|
||||
NextEntry = DataQueue->Queue.Flink;
|
||||
DataEntry = CONTAINING_RECORD(NextEntry, NP_DATA_QUEUE_ENTRY, QueueEntry);
|
||||
|
||||
while (NextEntry != &DataQueue->Queue)
|
||||
for (NextEntry = DataQueue->Queue.Flink;
|
||||
NextEntry != &DataQueue->Queue;
|
||||
NextEntry = DataQueue->Queue.Flink)
|
||||
{
|
||||
DataEntry = CONTAINING_RECORD(NextEntry, NP_DATA_QUEUE_ENTRY, QueueEntry);
|
||||
|
||||
|
@ -193,7 +194,7 @@ NpGetNextRealDataQueueEntry(IN PNP_DATA_QUEUE DataQueue,
|
|||
}
|
||||
}
|
||||
|
||||
return DataEntry;
|
||||
return NextEntry;
|
||||
}
|
||||
|
||||
VOID
|
||||
|
|
|
@ -394,7 +394,7 @@ NTSTATUS
|
|||
NTAPI
|
||||
NpUninitializeDataQueue(IN PNP_DATA_QUEUE DataQueue);
|
||||
|
||||
PNP_DATA_QUEUE_ENTRY
|
||||
PLIST_ENTRY
|
||||
NTAPI
|
||||
NpGetNextRealDataQueueEntry(IN PNP_DATA_QUEUE DataQueue,
|
||||
IN PLIST_ENTRY List);
|
||||
|
@ -525,6 +525,10 @@ VOID
|
|||
NTAPI
|
||||
NpFreeClientSecurityContext(IN PSECURITY_CLIENT_CONTEXT ClientContext);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
NpImpersonateClientContext(IN PNP_CCB Ccb);
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
NpCopyClientContext(IN PNP_CCB Ccb,
|
||||
|
|
|
@ -48,7 +48,9 @@ NpReadDataQueue(IN PNP_DATA_QUEUE DataQueue,
|
|||
}
|
||||
else
|
||||
{
|
||||
DataEntry = NpGetNextRealDataQueueEntry(DataQueue, List);
|
||||
DataEntry = CONTAINING_RECORD(NpGetNextRealDataQueueEntry(DataQueue, List),
|
||||
NP_DATA_QUEUE_ENTRY,
|
||||
QueueEntry);
|
||||
}
|
||||
|
||||
while ((&DataEntry->QueueEntry != &DataQueue->Queue) && (RemainingSize))
|
||||
|
@ -118,7 +120,9 @@ NpReadDataQueue(IN PNP_DATA_QUEUE DataQueue,
|
|||
{
|
||||
if (ReadOverflowOperation)
|
||||
{
|
||||
TempDataEntry = NpGetNextRealDataQueueEntry(DataQueue, List);
|
||||
TempDataEntry = CONTAINING_RECORD(NpGetNextRealDataQueueEntry(DataQueue, List),
|
||||
NP_DATA_QUEUE_ENTRY,
|
||||
QueueEntry);
|
||||
ASSERT(TempDataEntry == DataEntry);
|
||||
}
|
||||
|
||||
|
@ -149,7 +153,9 @@ NpReadDataQueue(IN PNP_DATA_QUEUE DataQueue,
|
|||
}
|
||||
else
|
||||
{
|
||||
DataEntry = NpGetNextRealDataQueueEntry(DataQueue, List);
|
||||
DataEntry = CONTAINING_RECORD(NpGetNextRealDataQueueEntry(DataQueue, List),
|
||||
NP_DATA_QUEUE_ENTRY,
|
||||
QueueEntry);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -46,10 +46,14 @@ NpWriteDataQueue(IN PNP_DATA_QUEUE WriteQueue,
|
|||
MoreProcessing = FALSE;
|
||||
}
|
||||
|
||||
for (DataEntry = NpGetNextRealDataQueueEntry(WriteQueue, List);
|
||||
for (DataEntry = CONTAINING_RECORD(NpGetNextRealDataQueueEntry(WriteQueue, List),
|
||||
NP_DATA_QUEUE_ENTRY,
|
||||
QueueEntry);
|
||||
((WriteQueue->QueueState == ReadEntries) &&
|
||||
((*BytesNotWritten > 0) || (MoreProcessing)));
|
||||
DataEntry = NpGetNextRealDataQueueEntry(WriteQueue, List))
|
||||
DataEntry = CONTAINING_RECORD(NpGetNextRealDataQueueEntry(WriteQueue, List),
|
||||
NP_DATA_QUEUE_ENTRY,
|
||||
QueueEntry))
|
||||
{
|
||||
DataSize = DataEntry->DataSize;
|
||||
|
||||
|
|
Loading…
Reference in a new issue