diff options
author | Jung-uk Kim <jkim@FreeBSD.org> | 2014-12-02 05:23:03 +0800 |
---|---|---|
committer | Jung-uk Kim <jkim@FreeBSD.org> | 2014-12-02 05:23:03 +0800 |
commit | a0ce82c1ce9ff3c39049acf1032f0fd7887ef775 (patch) | |
tree | b99372e75ab883b555f18d998b414911c43559ff /emulators/virtualbox-ose | |
parent | 49bda2d1bda338110eeb843d2dc71e98732ee630 (diff) | |
download | freebsd-ports-gnome-a0ce82c1ce9ff3c39049acf1032f0fd7887ef775.tar.gz freebsd-ports-gnome-a0ce82c1ce9ff3c39049acf1032f0fd7887ef775.tar.zst freebsd-ports-gnome-a0ce82c1ce9ff3c39049acf1032f0fd7887ef775.zip |
Fix crash with USB devices attached.
PR: 194196
Diffstat (limited to 'emulators/virtualbox-ose')
-rw-r--r-- | emulators/virtualbox-ose/Makefile | 1 | ||||
-rw-r--r-- | emulators/virtualbox-ose/files/patch-src-VBox-Devices-USB-freebsd-USBProxyDevice-freebsd.cpp | 48 |
2 files changed, 39 insertions, 10 deletions
diff --git a/emulators/virtualbox-ose/Makefile b/emulators/virtualbox-ose/Makefile index 1ba2d9bff2fb..61e01518cf34 100644 --- a/emulators/virtualbox-ose/Makefile +++ b/emulators/virtualbox-ose/Makefile @@ -3,6 +3,7 @@ PORTNAME= virtualbox-ose DISTVERSION= 4.3.20 +PORTREVISION= 1 CATEGORIES= emulators MASTER_SITES= http://download.virtualbox.org/virtualbox/${DISTVERSION}/ \ http://tmp.chruetertee.ch/ \ diff --git a/emulators/virtualbox-ose/files/patch-src-VBox-Devices-USB-freebsd-USBProxyDevice-freebsd.cpp b/emulators/virtualbox-ose/files/patch-src-VBox-Devices-USB-freebsd-USBProxyDevice-freebsd.cpp index 98547e544c6d..0224a77751ba 100644 --- a/emulators/virtualbox-ose/files/patch-src-VBox-Devices-USB-freebsd-USBProxyDevice-freebsd.cpp +++ b/emulators/virtualbox-ose/files/patch-src-VBox-Devices-USB-freebsd-USBProxyDevice-freebsd.cpp @@ -1,5 +1,5 @@ ---- src/VBox/Devices/USB/freebsd/USBProxyDevice-freebsd.cpp.orig 2014-10-11 08:06:56.000000000 -0400 -+++ src/VBox/Devices/USB/freebsd/USBProxyDevice-freebsd.cpp 2014-11-18 15:10:55.000000000 -0500 +--- src/VBox/Devices/USB/freebsd/USBProxyDevice-freebsd.cpp.orig 2014-11-21 16:22:08.000000000 +0100 ++++ src/VBox/Devices/USB/freebsd/USBProxyDevice-freebsd.cpp 2014-11-28 17:25:16.000000000 +0100 @@ -52,6 +52,7 @@ #include <iprt/asm.h> #include <iprt/string.h> @@ -48,7 +48,7 @@ } RTFileClose(hFile); -@@ -449,11 +461,13 @@ +@@ -449,12 +461,12 @@ usbProxyFreeBSDFsUnInit(pProxyDev); @@ -58,12 +58,26 @@ RTFileClose(pDevFBSD->hFile); pDevFBSD->hFile = NIL_RTFILE; - RTMemFree(pDevFBSD); +- RTMemFree(pDevFBSD); - pProxyDev->Backend.pv = NULL; - +- LogFlow(("usbProxyFreeBSDClose: returns\n")); } -@@ -822,7 +836,7 @@ + +@@ -688,9 +700,10 @@ + pUrb, (unsigned)pUrb->EndPt, (unsigned)pUrb->enmDir)); + + ep_num = pUrb->EndPt; +- +- if ((pUrb->enmType != VUSBXFERTYPE_MSG) && (pUrb->enmDir == VUSBDIRECTION_IN)) ++ if ((pUrb->enmType != VUSBXFERTYPE_MSG) && (pUrb->enmDir == VUSBDIRECTION_IN)) { ++ /* set IN-direction bit */ + ep_num |= 0x80; ++ } + + index = 0; + +@@ -822,7 +835,7 @@ PUSBENDPOINTFBSD pEndpointFBSD; PVUSBURB pUrb; struct usb_fs_complete UsbFsComplete; @@ -72,9 +86,12 @@ int rc; LogFlow(("usbProxyFreeBSDUrbReap: pProxyDev=%p, cMillies=%u\n", -@@ -948,21 +962,34 @@ +@@ -946,23 +959,38 @@ + (unsigned)pEndpointFBSD->acbData[1])); + } - else if (cMillies && rc == VERR_RESOURCE_BUSY) +- else if (cMillies && rc == VERR_RESOURCE_BUSY) ++ else if (cMillies != 0 && rc == VERR_RESOURCE_BUSY) { - /* Poll for finished transfers */ - PollFd.fd = RTFileToNative(pDevFBSD->hFile); @@ -108,6 +125,8 @@ + uint8_t bRead; + size_t cbIgnored = 0; + RTPipeRead(pDevFBSD->hPipeWakeupR, &bRead, 1, &cbIgnored); ++ /* Make sure we return from this function */ ++ cMillies = 0; + } + break; + } @@ -120,7 +139,7 @@ } return pUrb; } -@@ -984,6 +1011,16 @@ +@@ -984,6 +1012,16 @@ return usbProxyFreeBSDEndpointClose(pProxyDev, index); } @@ -137,7 +156,16 @@ /** * The FreeBSD USB Proxy Backend. */ -@@ -1005,6 +1042,7 @@ +@@ -992,7 +1030,7 @@ + /* pszName */ + "host", + /* cbBackend */ +- sizeof(PUSBPROXYDEVFBSD), ++ sizeof(USBPROXYDEVFBSD), + usbProxyFreeBSDOpen, + usbProxyFreeBSDInit, + usbProxyFreeBSDClose, +@@ -1005,6 +1043,7 @@ usbProxyFreeBSDUrbQueue, usbProxyFreeBSDUrbCancel, usbProxyFreeBSDUrbReap, |