Changeset 75979 in vbox
- Timestamp:
- Dec 5, 2018 3:50:48 PM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/VMMDev/VMMDevHGCM.cpp
r75853 r75979 1812 1812 AssertRCReturn(rc, rc); 1813 1813 1814 vmmdevHGCMAddCommand(pThis, pCmd); 1814 /* 1815 * Do not restore cancelled calls. Why do we save them to start with? 1816 * 1817 * The guest memory no longer contains a valid request! So, it is not 1818 * possible to restore it. The memory is often reused for a new request 1819 * by now and we will end up trying to complete that more than once if 1820 * we restore a cancelled call. In some cases VERR_HGCM_INVALID_CLIENT_ID 1821 * is returned, though it might just be silent memory corruption. 1822 */ 1823 /* See current version above. */ 1824 if (!fCancelled) 1825 vmmdevHGCMAddCommand(pThis, pCmd); 1826 else 1827 { 1828 Log(("vmmdevHGCMLoadState: Skipping cancelled request: enmCmdType=%d GCPhys=%#RX32 LB %#x\n", 1829 enmCmdType, GCPhys, cbRequest)); 1830 vmmdevHGCMCmdFree(pThis, pCmd); 1831 } 1815 1832 } 1816 1833 … … 1888 1905 AssertRCReturn(rc, rc); 1889 1906 1890 vmmdevHGCMAddCommand(pThis, pCmd); 1907 /* See current version above. */ 1908 if (!fCancelled) 1909 vmmdevHGCMAddCommand(pThis, pCmd); 1910 else 1911 { 1912 Log(("vmmdevHGCMLoadState: Skipping cancelled request: enmCmdType=%d GCPhys=%#RX32 LB %#x\n", 1913 enmCmdType, GCPhys, cbRequest)); 1914 vmmdevHGCMCmdFree(pThis, pCmd); 1915 } 1891 1916 } 1892 1917 … … 1948 1973 AssertReturn(pCmd, VERR_NO_MEMORY); 1949 1974 1950 if (u32SSMVersion >= 9) 1951 pCmd->fCancelled = pLoadedCmd->fCancelled; 1952 else 1953 pCmd->fCancelled = false; 1975 Assert(pLoadedCmd->fCancelled == false); 1976 pCmd->fCancelled = false; 1954 1977 pCmd->fRestored = true; 1955 1978 pCmd->enmRequestType = enmRequestType; … … 1991 2014 AssertReturn(pCmd, VERR_NO_MEMORY); 1992 2015 1993 if (u32SSMVersion >= 9) 1994 pCmd->fCancelled = pLoadedCmd->fCancelled; 1995 else 1996 pCmd->fCancelled = false; 2016 Assert(pLoadedCmd->fCancelled == false); 2017 pCmd->fCancelled = false; 1997 2018 pCmd->fRestored = true; 1998 2019 pCmd->enmRequestType = enmRequestType; … … 2028 2049 { 2029 2050 ASSERT_GUEST_RETURN(pLoadedCmd->enmCmdType == VBOXHGCMCMDTYPE_CALL, VERR_MISMATCH); 2051 Assert(pLoadedCmd->fCancelled == false); 2030 2052 } 2031 2053 … … 2037 2059 2038 2060 /* pLoadedCmd is fake, it does not contain actual call parameters. Only pagelists for LinAddr. */ 2039 if (u32SSMVersion >= 9) 2040 pCmd->fCancelled = pLoadedCmd->fCancelled; 2041 else 2042 pCmd->fCancelled = false; 2061 pCmd->fCancelled = false; 2043 2062 pCmd->fRestored = true; 2044 2063 pCmd->enmRequestType = enmRequestType;
Note:
See TracChangeset
for help on using the changeset viewer.