Changeset 81870 in vbox for trunk/src/VBox/Devices/Storage
- Timestamp:
- Nov 15, 2019 12:52:16 PM (5 years ago)
- svn:sync-xref-src-repo-rev:
- 134664
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Storage/DevATA.cpp
r81867 r81870 4042 4042 PATADEVSTATER3 pIfR3 = RT_FROM_MEMBER(pInterface, ATADEVSTATER3, IMountNotify); 4043 4043 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); 4045 4045 Log(("%s: changing LUN#%d\n", __FUNCTION__, pIfR3->iLUN)); 4046 4046 … … 4075 4075 PATADEVSTATER3 pIfR3 = RT_FROM_MEMBER(pInterface, ATADEVSTATER3, IMountNotify); 4076 4076 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); 4078 4078 Log(("%s:\n", __FUNCTION__)); 4079 4079 pIf->cTotalSectors = 0; … … 4824 4824 # ifndef RT_OS_WINDOWS /* We've got this API on windows, but it doesn't necessarily interrupt I/O. */ 4825 4825 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); 4827 4827 RTThreadPoke(pCtlR3->hAsyncIOThread); 4828 4828 # endif … … 5024 5024 uint8_t status = s->uATARegStatus; 5025 5025 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); 5027 5027 5028 5028 ataSetStatusValue(pCtl, s, ATA_STAT_BUSY); … … 5206 5206 { 5207 5207 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); 5209 5209 RT_NOREF(offPort); 5210 5210 … … 5277 5277 { 5278 5278 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); 5280 5280 RT_NOREF(offPort); 5281 5281 … … 5365 5365 { 5366 5366 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); 5368 5368 RT_NOREF(offPort); 5369 5369 … … 5456 5456 { 5457 5457 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); 5459 5459 RT_NOREF(offPort); 5460 5460 … … 5762 5762 PATASTATER3 const pThisCC = PDMDEVINS_2_DATA_CC(pDevIns, PATASTATER3); 5763 5763 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); 5765 5765 int rc = VINF_SUCCESS; 5766 5766 uint64_t u64TS = 0; /* shut up gcc */ … … 6387 6387 { 6388 6388 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)); 6390 6390 RT_NOREF(pvUser); 6391 6391 … … 6422 6422 { 6423 6423 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)); 6425 6425 RT_NOREF(pvUser); 6426 6426 … … 6555 6555 #ifdef VBOX_STRICT 6556 6556 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); 6558 6558 Assert((uintptr_t)pvUser < 2); 6559 6559 Assert(!pCtl->aIfs[0].fPresent && !pCtl->aIfs[1].fPresent); … … 6578 6578 #ifdef VBOX_STRICT 6579 6579 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); 6581 6581 Assert((uintptr_t)pvUser < 2); 6582 6582 Assert(cb <= 4); … … 6642 6642 { 6643 6643 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); 6645 6645 6646 6646 Assert((uintptr_t)pvUser < 2); … … 6680 6680 { 6681 6681 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); 6683 6683 int rc; 6684 6684 … … 6712 6712 { 6713 6713 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); 6715 6715 int rc; 6716 6716
Note:
See TracChangeset
for help on using the changeset viewer.