VirtualBox

Changeset 86574 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Oct 14, 2020 12:47:10 PM (4 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
140928
Message:

Dev/E1000: (bugref:9829) Fixed division-by-zero issues

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Network/DevE1000.cpp

    r86486 r86574  
    39483948    unsigned nDescsToFetch      = RT_MIN(nDescsAvailable, E1K_TXD_CACHE_SIZE - pThis->nTxDFetched);
    39493949    unsigned nDescsTotal        = TDLEN / sizeof(E1KTXDESC);
     3950    Assert(nDescsTotal != 0);
     3951    if (nDescsTotal == 0)
     3952        return 0;
    39503953    unsigned nFirstNotLoaded    = (TDH + pThis->nTxDFetched) % nDescsTotal;
    39513954    unsigned nDescsInSingleRead = RT_MIN(nDescsToFetch, nDescsTotal - nFirstNotLoaded);
     
    54635466        if (i == pThis->iTxDCurrent)
    54645467            LogRel(("E1000: >>> "));
    5465         LogRel(("E1000: %RGp: %R[e1ktxd]\n", e1kDescAddr(TDBAH, TDBAL, tdh++ % cDescs), &pThis->aTxDescriptors[i]));
     5468        if (cDescs)
     5469            LogRel(("E1000: %RGp: %R[e1ktxd]\n", e1kDescAddr(TDBAH, TDBAL, tdh++ % cDescs), &pThis->aTxDescriptors[i]));
     5470        else
     5471            LogRel(("E1000: <lost>: %R[e1ktxd]\n", &pThis->aTxDescriptors[i]));
    54665472    }
    54675473}
     
    73457351        if (i == pThis->iRxDCurrent)
    73467352            pHlp->pfnPrintf(pHlp, ">>> ");
    7347         pHlp->pfnPrintf(pHlp, "%RGp: %R[e1krxd]\n",
    7348                         e1kDescAddr(RDBAH, RDBAL, rdh++ % cDescs),
    7349                         &pThis->aRxDescriptors[i]);
     7353        if (cDescs)
     7354            pHlp->pfnPrintf(pHlp, "%RGp: %R[e1krxd]\n",
     7355                            e1kDescAddr(RDBAH, RDBAL, rdh++ % cDescs),
     7356                            &pThis->aRxDescriptors[i]);
     7357        else
     7358            pHlp->pfnPrintf(pHlp, "<lost>: %R[e1krxd]\n",
     7359                            &pThis->aRxDescriptors[i]);
    73507360    }
    73517361#endif /* E1K_WITH_RXD_CACHE */
     
    73747384        if (i == pThis->iTxDCurrent)
    73757385            pHlp->pfnPrintf(pHlp, ">>> ");
    7376         pHlp->pfnPrintf(pHlp, "%RGp: %R[e1ktxd]\n",
    7377                         e1kDescAddr(TDBAH, TDBAL, tdh++ % cDescs),
    7378                         &pThis->aTxDescriptors[i]);
     7386        if (cDescs)
     7387            pHlp->pfnPrintf(pHlp, "%RGp: %R[e1ktxd]\n",
     7388                            e1kDescAddr(TDBAH, TDBAL, tdh++ % cDescs),
     7389                            &pThis->aTxDescriptors[i]);
     7390        else
     7391            pHlp->pfnPrintf(pHlp, "<lost>: %R[e1ktxd]\n",
     7392                            &pThis->aTxDescriptors[i]);
    73797393    }
    73807394#endif /* E1K_WITH_TXD_CACHE */
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette