VirtualBox

Changeset 59796 in vbox for trunk/src/VBox/Devices/USB


Ignore:
Timestamp:
Feb 24, 2016 10:59:59 AM (9 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
105676
Message:

VUSB: Update pointer pointers to pVUsb and pVUsb->pUrb when reallocating message URB structures

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/USB/VUSBUrb.cpp

    r59775 r59796  
    631631        //pExtra->Urb.pVUsb->pNext = NULL;
    632632        //pExtra->Urb.pVUsb->ppPrev = NULL;
     633        pExtra->Urb.pVUsb->pUrb = &pExtra->Urb;
    633634        pExtra->Urb.pVUsb->pDev = pUrb->pVUsb->pDev;
    634635        pExtra->Urb.pVUsb->pfnFree = vusbMsgFreeUrb;
     
    688689        LogFlow(("vusbMsgSetup: Replacing canceled pExtra=%p with %p.\n", pExtra, pvNew));
    689690        pPipe->pCtrl = pExtra = (PVUSBCTRLEXTRA)pvNew;
     691        pExtra->Urb.pVUsb = (PVUSBURBVUSB)&pExtra->Urb.abData[sizeof(pExtra->Urb.abData) + sizeof(VUSBSETUP)];
     692        pExtra->Urb.pVUsb->pUrb = &pExtra->Urb;
    690693        pExtra->pMsg = (PVUSBSETUP)pExtra->Urb.abData;
    691694        pExtra->Urb.enmState = VUSBURBSTATE_ALLOCATED;
     
    696699     * Check that we've got sufficient space in the message URB.
    697700     */
    698     if (pExtra->cbMax < cbBuf + pSetupIn->wLength)
    699     {
    700         uint32_t cbReq = RT_ALIGN_32(cbBuf + pSetupIn->wLength, 1024);
     701    if (pExtra->cbMax < cbBuf + pSetupIn->wLength + sizeof(VUSBURBVUSBINT))
     702    {
     703        uint32_t cbReq = RT_ALIGN_32(cbBuf + pSetupIn->wLength + sizeof(VUSBURBVUSBINT), 1024);
    701704        PVUSBCTRLEXTRA pNew = (PVUSBCTRLEXTRA)RTMemRealloc(pExtra, RT_OFFSETOF(VUSBCTRLEXTRA, Urb.abData[cbReq]));
    702705        if (!pNew)
     
    711714            pExtra = pNew;
    712715        }
     716        pExtra->Urb.pVUsb = (PVUSBURBVUSB)&pExtra->Urb.abData[cbBuf + pSetupIn->wLength];
     717        pExtra->Urb.pVUsb->pUrb = &pExtra->Urb;
    713718        pExtra->cbMax = cbReq;
    714719    }
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