VirtualBox

Changeset 81870 in vbox for trunk/src/VBox/Devices/Storage


Ignore:
Timestamp:
Nov 15, 2019 12:52:16 PM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
134664
Message:

DevATA: Use RT_SAFE_SUBSCRIPT. bugref:9218

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Storage/DevATA.cpp

    r81867 r81870  
    40424042    PATADEVSTATER3  pIfR3 = RT_FROM_MEMBER(pInterface, ATADEVSTATER3, IMountNotify);
    40434043    PATASTATE       pThis = PDMDEVINS_2_DATA(pIfR3->pDevIns, PATASTATE);
    4044     PATADEVSTATE    pIf   = &pThis->aCts[pIfR3->iCtl % RT_ELEMENTS(pThis->aCts)].aIfs[pIfR3->iDev % RT_ELEMENTS(pThis->aCts[0].aIfs)];
     4044    PATADEVSTATE    pIf   = &RT_SAFE_SUBSCRIPT(RT_SAFE_SUBSCRIPT(pThis->aCts, pIfR3->iCtl).aIfs, pIfR3->iDev);
    40454045    Log(("%s: changing LUN#%d\n", __FUNCTION__, pIfR3->iLUN));
    40464046
     
    40754075    PATADEVSTATER3  pIfR3 = RT_FROM_MEMBER(pInterface, ATADEVSTATER3, IMountNotify);
    40764076    PATASTATE       pThis = PDMDEVINS_2_DATA(pIfR3->pDevIns, PATASTATE);
    4077     PATADEVSTATE    pIf   = &pThis->aCts[pIfR3->iCtl % RT_ELEMENTS(pThis->aCts)].aIfs[pIfR3->iDev % RT_ELEMENTS(pThis->aCts[0].aIfs)];
     4077    PATADEVSTATE    pIf   = &RT_SAFE_SUBSCRIPT(RT_SAFE_SUBSCRIPT(pThis->aCts, pIfR3->iCtl).aIfs, pIfR3->iDev);
    40784078    Log(("%s:\n", __FUNCTION__));
    40794079    pIf->cTotalSectors = 0;
     
    48244824# ifndef RT_OS_WINDOWS /* We've got this API on windows, but it doesn't necessarily interrupt I/O. */
    48254825                        PATASTATER3 pThisCC = PDMDEVINS_2_DATA_CC(pDevIns, PATASTATER3);
    4826                         PATACONTROLLERR3 pCtlR3 = &pThisCC->aCts[pCtl->iCtl % RT_ELEMENTS(pThisCC->aCts)];
     4826                        PATACONTROLLERR3 pCtlR3 = &RT_SAFE_SUBSCRIPT(pThisCC->aCts, pCtl->iCtl);
    48274827                        RTThreadPoke(pCtlR3->hAsyncIOThread);
    48284828# endif
     
    50245024            uint8_t        status  = s->uATARegStatus;
    50255025            PATASTATER3    pThisCC = PDMDEVINS_2_DATA_CC(pDevIns, PATASTATER3);
    5026             PATADEVSTATER3 pDevR3  = &pThisCC->aCts[pCtl->iCtl % RT_ELEMENTS(pThisCC->aCts)].aIfs[s->iDev % RT_ELEMENTS(pThisCC->aCts[0].aIfs)];
     5026            PATADEVSTATER3 pDevR3  = &RT_SAFE_SUBSCRIPT(RT_SAFE_SUBSCRIPT(pThisCC->aCts, pCtl->iCtl).aIfs, s->iDev);
    50275027
    50285028            ataSetStatusValue(pCtl, s, ATA_STAT_BUSY);
     
    52065206{
    52075207    PATASTATE      pThis = PDMDEVINS_2_DATA(pDevIns, PATASTATE);
    5208     PATACONTROLLER pCtl  = &pThis->aCts[(uintptr_t)pvUser % RT_ELEMENTS(pThis->aCts)];
     5208    PATACONTROLLER pCtl  = &RT_SAFE_SUBSCRIPT(pThis->aCts, (uintptr_t)pvUser);
    52095209    RT_NOREF(offPort);
    52105210
     
    52775277{
    52785278    PATASTATE      pThis = PDMDEVINS_2_DATA(pDevIns, PATASTATE);
    5279     PATACONTROLLER pCtl  = &pThis->aCts[(uintptr_t)pvUser % RT_ELEMENTS(pThis->aCts)];
     5279    PATACONTROLLER pCtl  = &RT_SAFE_SUBSCRIPT(pThis->aCts, (uintptr_t)pvUser);
    52805280    RT_NOREF(offPort);
    52815281
     
    53655365{
    53665366    PATASTATE      pThis = PDMDEVINS_2_DATA(pDevIns, PATASTATE);
    5367     PATACONTROLLER pCtl  = &pThis->aCts[(uintptr_t)pvUser % RT_ELEMENTS(pThis->aCts)];
     5367    PATACONTROLLER pCtl  = &RT_SAFE_SUBSCRIPT(pThis->aCts, (uintptr_t)pvUser);
    53685368    RT_NOREF(offPort);
    53695369
     
    54565456{
    54575457    PATASTATE      pThis = PDMDEVINS_2_DATA(pDevIns, PATASTATE);
    5458     PATACONTROLLER pCtl  = &pThis->aCts[(uintptr_t)pvUser % RT_ELEMENTS(pThis->aCts)];
     5458    PATACONTROLLER pCtl  = &RT_SAFE_SUBSCRIPT(pThis->aCts, (uintptr_t)pvUser);
    54595459    RT_NOREF(offPort);
    54605460
     
    57625762    PATASTATER3 const       pThisCC = PDMDEVINS_2_DATA_CC(pDevIns, PATASTATER3);
    57635763    uintptr_t const         iCtl    = pCtlR3 - &pThisCC->aCts[0];
    5764     PATACONTROLLER const    pCtl    = &pThis->aCts[iCtl % RT_ELEMENTS(pThisCC->aCts)];
     5764    PATACONTROLLER const    pCtl    = &RT_SAFE_SUBSCRIPT(pThis->aCts, iCtl);
    57655765    int                     rc      = VINF_SUCCESS;
    57665766    uint64_t                u64TS   = 0; /* shut up gcc */
     
    63876387{
    63886388    PATASTATE      pThis = PDMDEVINS_2_DATA(pDevIns, PATASTATE);
    6389     PATACONTROLLER pCtl  = &pThis->aCts[(offPort >> BM_DMA_CTL_IOPORTS_SHIFT) % RT_ELEMENTS(pThis->aCts)];
     6389    PATACONTROLLER pCtl  = &RT_SAFE_SUBSCRIPT(pThis->aCts, (offPort >> BM_DMA_CTL_IOPORTS_SHIFT));
    63906390    RT_NOREF(pvUser);
    63916391
     
    64226422{
    64236423    PATASTATE      pThis = PDMDEVINS_2_DATA(pDevIns, PATASTATE);
    6424     PATACONTROLLER pCtl  = &pThis->aCts[(offPort >> BM_DMA_CTL_IOPORTS_SHIFT) % RT_ELEMENTS(pThis->aCts)];
     6424    PATACONTROLLER pCtl  = &RT_SAFE_SUBSCRIPT(pThis->aCts, (offPort >> BM_DMA_CTL_IOPORTS_SHIFT));
    64256425    RT_NOREF(pvUser);
    64266426
     
    65556555#ifdef VBOX_STRICT
    65566556    PATASTATE      pThis = PDMDEVINS_2_DATA(pDevIns, PATASTATE);
    6557     PATACONTROLLER pCtl  = &pThis->aCts[(uintptr_t)pvUser % RT_ELEMENTS(pThis->aCts)];
     6557    PATACONTROLLER pCtl  = &RT_SAFE_SUBSCRIPT(pThis->aCts, (uintptr_t)pvUser);
    65586558    Assert((uintptr_t)pvUser < 2);
    65596559    Assert(!pCtl->aIfs[0].fPresent && !pCtl->aIfs[1].fPresent);
     
    65786578#ifdef VBOX_STRICT
    65796579    PATASTATE      pThis = PDMDEVINS_2_DATA(pDevIns, PATASTATE);
    6580     PATACONTROLLER pCtl = &pThis->aCts[(uintptr_t)pvUser % RT_ELEMENTS(pThis->aCts)];
     6580    PATACONTROLLER pCtl = &RT_SAFE_SUBSCRIPT(pThis->aCts, (uintptr_t)pvUser);
    65816581    Assert((uintptr_t)pvUser < 2);
    65826582    Assert(cb <= 4);
     
    66426642{
    66436643    PATASTATE      pThis = PDMDEVINS_2_DATA(pDevIns, PATASTATE);
    6644     PATACONTROLLER pCtl = &pThis->aCts[(uintptr_t)pvUser % RT_ELEMENTS(pThis->aCts)];
     6644    PATACONTROLLER pCtl = &RT_SAFE_SUBSCRIPT(pThis->aCts, (uintptr_t)pvUser);
    66456645
    66466646    Assert((uintptr_t)pvUser < 2);
     
    66806680{
    66816681    PATASTATE      pThis = PDMDEVINS_2_DATA(pDevIns, PATASTATE);
    6682     PATACONTROLLER pCtl = &pThis->aCts[(uintptr_t)pvUser % RT_ELEMENTS(pThis->aCts)];
     6682    PATACONTROLLER pCtl = &RT_SAFE_SUBSCRIPT(pThis->aCts, (uintptr_t)pvUser);
    66836683    int rc;
    66846684
     
    67126712{
    67136713    PATASTATE      pThis = PDMDEVINS_2_DATA(pDevIns, PATASTATE);
    6714     PATACONTROLLER pCtl = &pThis->aCts[(uintptr_t)pvUser % RT_ELEMENTS(pThis->aCts)];
     6714    PATACONTROLLER pCtl = &RT_SAFE_SUBSCRIPT(pThis->aCts, (uintptr_t)pvUser);
    67156715    int            rc;
    67166716
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