netkvm need to do with enable msi that not used.
netkvm when qemu enable 8 queue (msi count is 17), nPathBundles is 2, qemu send msi large than 6, will result os crash.
eg: pContext->pPathBundles[i],  i will match the index that had not init.
@@ -261,7 +261,11 @@ static CParaNdisAbstractPath *GetPathByMessageId(PARANDIS_ADAPTER *pContext, ULO
CParaNdisAbstractPath *path = NULL;
UINT bundleId = MessageId / 2;
- if (pContext->CXPath.getMessageIndex() == MessageId)
+ if (pContext->CXPath.getMessageIndex() < MessageId)
+ {
+ path = NULL;
+ }
+ else if (pContext->CXPath.getMessageIndex() == MessageId)
{
path = &pContext->CXPath;
}
@@ -306,6 +310,10 @@ static BOOLEAN MiniportMSIInterrupt(
}
CParaNdisAbstractPath *path = GetPathByMessageId(pContext, MessageId);
+ if (NULL == path) {
+ *QueueDefaultInterruptDpc = FALSE;
+ return TRUE;
+ }
path->SetLastInterruptTimestamp(pContext->LastInterruptTimeStamp);
