VirtualBox

Changeset 50891 in vbox


Ignore:
Timestamp:
Mar 26, 2014 1:54:05 PM (11 years ago)
Author:
vboxsync
Message:

VMMDevHGCM: do not delete pending HGCM requests when VM is being saved.

Location:
trunk/src/VBox/Devices/VMMDev
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/VMMDev/VMMDev.cpp

    r50674 r50891  
    36653665        pThis->pCredentials = NULL;
    36663666    }
     3667
     3668    vmmdevHGCMDestroy(pThis);
    36673669
    36683670#ifndef VBOX_WITHOUT_TESTING_FEATURES
  • trunk/src/VBox/Devices/VMMDev/VMMDevHGCM.cpp

    r50820 r50891  
    9292    /** Whether the command is in the active commands list. */
    9393    bool fInList;
    94 
    95     /** Whether the command was saved. */
    96     bool fSaved;
    9794
    9895    /** GC physical address of the guest request. */
     
    19561953    vmmdevHGCMRemoveCommand (pThis, pCmd);
    19571954
    1958     if (pCmd->fCancelled || pCmd->fSaved)
    1959     {
    1960         LogFlowFunc(("A cancelled command %p: %d %d\n", pCmd, pCmd->fCancelled, pCmd->fSaved));
     1955    if (pCmd->fCancelled)
     1956    {
     1957        LogFlowFunc(("A cancelled command %p: %d\n", pCmd, pCmd->fCancelled));
    19611958    }
    19621959    else
     
    25072504            rc = SSMR3PutU32(pSSM, 0);
    25082505            AssertRCReturn(rc, rc);
    2509 
    2510             /* Mark the command as saved to make sure that it will not be
    2511              * completed later by a still running host service.
    2512              */
    2513             pIter->fSaved = true;
    2514             vmmdevHGCMRemoveCommand (pThis, pIter);
    25152506
    25162507            pIter = pNext;
     
    29882979    return rc;
    29892980}
     2981
     2982void vmmdevHGCMDestroy(PVMMDEV pThis)
     2983{
     2984    LogFlowFunc(("\n"));
     2985
     2986    PVBOXHGCMCMD pIter = pThis->pHGCMCmdList;
     2987
     2988    while (pIter)
     2989    {
     2990        PVBOXHGCMCMD pNext = pIter->pNext;
     2991
     2992        vmmdevHGCMRemoveCommand(pThis, pIter);
     2993
     2994        /* Deallocate the command memory. */
     2995        RTMemFree(pIter->paLinPtrs);
     2996        RTMemFree(pIter);
     2997
     2998        pIter = pNext;
     2999    }
     3000
     3001    return;
     3002}
  • trunk/src/VBox/Devices/VMMDev/VMMDevHGCM.h

    r44528 r50891  
    3333int vmmdevHGCMLoadState(VMMDevState *pVMMDevState, PSSMHANDLE pSSM, uint32_t u32Version);
    3434int vmmdevHGCMLoadStateDone(VMMDevState *pVMMDevState, PSSMHANDLE pSSM);
     35
     36void vmmdevHGCMDestroy(PVMMDEV pThis);
    3537RT_C_DECLS_END
    3638
Note: See TracChangeset for help on using the changeset viewer.

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