Index: /trunk/src/VBox/Devices/Network/DrvNetShaper.cpp
===================================================================
--- /trunk/src/VBox/Devices/Network/DrvNetShaper.cpp	(revision 55656)
+++ /trunk/src/VBox/Devices/Network/DrvNetShaper.cpp	(revision 55657)
@@ -297,5 +297,11 @@
 {
     PDRVNETSHAPER pThis = RT_FROM_MEMBER(pInterface, DRVNETSHAPER, IBaseR0);
-    PDMIBASER0_RETURN_INTERFACE(pThis->pDrvInsR3, pszIID, PDMINETWORKUP, &pThis->INetworkUpR0);
+    /*
+     * We need to check if the underlying driver supports R0. If it does not,
+     * then it is useless and even harmful to support R0 here, as we will end up
+     * returning errors when a network adapter tries to allocate a buffer in R0.
+     */
+    if (pThis->pIBelowNetR0)
+        PDMIBASER0_RETURN_INTERFACE(pThis->pDrvInsR3, pszIID, PDMINETWORKUP, &pThis->INetworkUpR0);
     return NIL_RTR0PTR;
 }
