VirtualBox

Ignore:
Timestamp:
Aug 8, 2015 11:32:32 PM (10 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
102007
Message:

VBoxNetFlt/darwin: Save and restore EFLAGS.AC in code that may possibly be called via SUPDrv I/O control code.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostDrivers/VBoxNetFlt/darwin/VBoxNetFlt-darwin.cpp

    r57252 r57253  
    10141014{
    10151015    LogFlow(("vboxNetFltDarwinAttachToInterface: pThis=%p (%s)\n", pThis, pThis->szName));
     1016    IPRT_DARWIN_SAVE_EFL_AC();
    10161017
    10171018    /*
     
    10311032        else
    10321033            Log(("VBoxFltDrv: failed to find ifnet '%s' (err=%d)\n", pThis->szName, err));
     1034        IPRT_DARWIN_RESTORE_EFL_AC();
    10331035        return VERR_INTNET_FLT_IF_NOT_FOUND;
    10341036    }
     
    10981100    else
    10991101        LogRel(("VBoxFltDrv: failed to attach to ifnet '%s' (err=%d)\n", pThis->szName, err));
     1102    IPRT_DARWIN_RESTORE_EFL_AC();
    11001103    return rc;
    11011104}
     
    11111114int  vboxNetFltPortOsXmit(PVBOXNETFLTINS pThis, void *pvIfData, PINTNETSG pSG, uint32_t fDst)
    11121115{
     1116    IPRT_DARWIN_SAVE_EFL_AC();
    11131117    NOREF(pvIfData);
    11141118
     
    11631167    }
    11641168
     1169    IPRT_DARWIN_RESTORE_EFL_AC();
    11651170    return rc;
    11661171}
     
    11691174void vboxNetFltPortOsSetActive(PVBOXNETFLTINS pThis, bool fActive)
    11701175{
     1176    IPRT_DARWIN_SAVE_EFL_AC();
    11711177    ifnet_t pIfNet = vboxNetFltDarwinRetainIfNet(pThis);
    11721178    if (pIfNet)
     
    12671273        vboxNetFltDarwinReleaseIfNet(pThis, pIfNet);
    12681274    }
     1275    IPRT_DARWIN_RESTORE_EFL_AC();
    12691276}
    12701277
     
    12861293void vboxNetFltOsDeleteInstance(PVBOXNETFLTINS pThis)
    12871294{
    1288     interface_filter_t pIfFilter;
     1295    IPRT_DARWIN_SAVE_EFL_AC();
    12891296
    12901297    /*
     
    12921299     */
    12931300    RTSpinlockAcquire(pThis->hSpinlock);
    1294     pIfFilter = ASMAtomicUoReadPtrT(&pThis->u.s.pIfFilter, interface_filter_t);
     1301    interface_filter_t pIfFilter = ASMAtomicUoReadPtrT(&pThis->u.s.pIfFilter, interface_filter_t);
    12951302    if (pIfFilter)
    12961303        ASMAtomicUoWriteNullPtr(&pThis->u.s.pIfFilter);
     
    13051312        pThis->u.s.pSysSock = NULL;
    13061313    }
     1314
     1315    IPRT_DARWIN_RESTORE_EFL_AC();
    13071316}
    13081317
     
    13281337     * specific to ifnet here is its IPv6 link-local address.
    13291338     */
     1339    IPRT_DARWIN_SAVE_EFL_AC();
    13301340    errno_t error;
    13311341
     1342    /** @todo reorg code to not have numerous returns with duplicate code... */
    13321343    error = sock_socket(PF_SYSTEM, SOCK_RAW, SYSPROTO_EVENT,
    13331344                        vboxNetFltDarwinSysSockUpcall, pThis,
     
    13361347    {
    13371348        LogRel(("sock_socket(SYSPROTO_EVENT): error %d\n", error));
     1349        IPRT_DARWIN_RESTORE_EFL_AC();
    13381350        return rc;
    13391351    }
     
    13451357        LogRel(("FIONBIO: error %d\n", error));
    13461358        sock_close(pThis->u.s.pSysSock);
     1359        IPRT_DARWIN_RESTORE_EFL_AC();
    13471360        return rc;
    13481361    }
     
    13521365        LogRel(("FIONBIO ok, but socket is blocking?!\n"));
    13531366        sock_close(pThis->u.s.pSysSock);
     1367        IPRT_DARWIN_RESTORE_EFL_AC();
    13541368        return rc;
    13551369    }
     
    13651379        LogRel(("SIOCSKEVFILT: error %d\n", error));
    13661380        sock_close(pThis->u.s.pSysSock);
     1381        IPRT_DARWIN_RESTORE_EFL_AC();
    13671382        return rc;
    13681383    }
     
    13751390    {
    13761391        LogRel(("ifnet_get_address_list: error %d\n", error));
     1392        IPRT_DARWIN_RESTORE_EFL_AC();
    13771393        return rc;
    13781394    }
     
    14311447    vboxNetFltDarwinSysSockUpcall(pThis->u.s.pSysSock, pThis, MBUF_DONTWAIT);
    14321448
     1449    IPRT_DARWIN_RESTORE_EFL_AC();
    14331450    return rc;
    14341451}
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