VirtualBox

Changeset 98121 in vbox for trunk/src/VBox/Devices/Network


Ignore:
Timestamp:
Jan 18, 2023 8:22:00 PM (2 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
155289
Message:

Devices/DevVirtioNet: Fix logic for attaching driver at device construct time which caused VM start errors before when no driver was attached. Add a missing safety check if pDrv is NULL. Also fix some indentation issues and a duplicate message.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Network/DevVirtioNet.cpp

    r98103 r98121  
    883883        pHlp->pfnPrintf(pHlp, "    pDrvBase .................. %p\n",   pThisCC->pDrvBase);
    884884        pHlp->pfnPrintf(pHlp, "    pDrv ...................... %p\n",   pThisCC->pDrv);
    885         pHlp->pfnPrintf(pHlp, "    pDrv ...................... %p\n",   pThisCC->pDrv);
    886885        pHlp->pfnPrintf(pHlp, "\n");
    887886    }
     
    11561155 */
    11571156static DECLCALLBACK(int) virtioNetR3LegacyDeviceLoadExec(PPDMDEVINS pDevIns, PSSMHANDLE pSSM, uint32_t uVersion, uint32_t uPass,
    1158                                                     RTMAC uMacLoaded)
     1157                                                         RTMAC uMacLoaded)
    11591158{
    11601159    PVIRTIONET     pThis   = PDMDEVINS_2_DATA(pDevIns, PVIRTIONET);
     
    19721971 */
    19731972static int virtioNetR3RxPktMultibufXfer(PPDMDEVINS pDevIns, PVIRTIONET pThis, uint8_t *pvPktBuf, size_t cb,
    1974                                        PVIRTIONETPKTHDR pRxPktHdr, PVIRTIONETVIRTQ pRxVirtq, PVIRTQBUF pVirtqBuf)
     1973                                        PVIRTIONETPKTHDR pRxPktHdr, PVIRTIONETVIRTQ pRxVirtq, PVIRTQBUF pVirtqBuf)
    19751974{
    19761975
     
    21192118 * @interface_method_impl{PDMINETWORKDOWN,pfnReceiveGso}
    21202119 */
    2121 static DECLCALLBACK(int) virtioNetR3NetworkDown_ReceiveGso(
    2122                                  PPDMINETWORKDOWN pInterface, const void *pvBuf, size_t cb, PCPDMNETWORKGSO pGso)
     2120static DECLCALLBACK(int) virtioNetR3NetworkDown_ReceiveGso(PPDMINETWORKDOWN pInterface, const void *pvBuf, size_t cb,
     2121                                                           PCPDMNETWORKGSO pGso)
    21232122{
    21242123    PVIRTIONETCC    pThisCC  = RT_FROM_MEMBER(pInterface, VIRTIONETCC, INetworkDown);
     
    26542653 */
    26552654static int virtioNetR3TransmitFrame(PVIRTIONET pThis, PVIRTIONETCC pThisCC, PPDMSCATTERGATHER pSgBuf,
    2656                                PPDMNETWORKGSO pGso, PVIRTIONETPKTHDR pPktHdr)
     2655                                    PPDMNETWORKGSO pGso, PVIRTIONETPKTHDR pPktHdr)
    26572656{
    26582657
     
    27172716 */
    27182717static int virtioNetR3TransmitPkts(PPDMDEVINS pDevIns, PVIRTIONET pThis, PVIRTIONETCC pThisCC,
    2719                                          PVIRTIONETVIRTQ pTxVirtq, bool fOnWorkerThread)
     2718                                   PVIRTIONETVIRTQ pTxVirtq, bool fOnWorkerThread)
    27202719{
    27212720    PVIRTIOCORE pVirtio = &pThis->Virtio;
     
    32783277        memset(pThis->aVlanFilter,          0, sizeof(pThis->aVlanFilter));
    32793278
    3280         pThisCC->pDrv->pfnSetPromiscuousMode(pThisCC->pDrv, true);
     3279        if (pThisCC->pDrv)
     3280            pThisCC->pDrv->pfnSetPromiscuousMode(pThisCC->pDrv, true);
    32813281
    32823282        for (uint16_t uVirtqNbr = 0; uVirtqNbr < pThis->cVirtqs; uVirtqNbr++)
     
    33493349    else if (   rc == VERR_PDM_NO_ATTACHED_DRIVER
    33503350             || rc == VERR_PDM_CFG_MISSING_DRIVER_NAME)
    3351                     Log(("[%s] No attached driver!\n", pThis->szInst));
     3351    {
     3352        /* This should never happen because this function is not called
     3353         * if there is no driver to attach! */
     3354        Log(("[%s] No attached driver!\n", pThis->szInst));
     3355    }
    33523356
    33533357    RT_NOREF2(pThis, fFlags);
     
    36163620             || rc == VERR_PDM_CFG_MISSING_DRIVER_NAME)
    36173621    {
    3618                     Log(("[%s] No attached driver!\n", pThis->szInst));
    3619                     AssertRCReturn(rc, rc);
    3620     }
     3622        /* No error! */
     3623        Log(("[%s] No attached driver!\n", pThis->szInst));
     3624    }
     3625    else
     3626        return PDMDEV_SET_ERROR(pDevIns, rc, N_("Failed to attach the network LUN"));
    36213627    /*
    36223628     * Status driver
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