diff options
author | Jung-uk Kim <jkim@FreeBSD.org> | 2017-09-08 09:12:56 +0800 |
---|---|---|
committer | Jung-uk Kim <jkim@FreeBSD.org> | 2017-09-08 09:12:56 +0800 |
commit | 3b388c46e9a78ba6684310383b923ba0522d3522 (patch) | |
tree | 5cada809e663a9f44ed9e93900b5f10657b5728f /emulators/virtualbox-ose/files | |
parent | a20fae9f56b15e27f22f7cafe0e53c45884b5ee0 (diff) | |
download | freebsd-ports-gnome-3b388c46e9a78ba6684310383b923ba0522d3522.tar.gz freebsd-ports-gnome-3b388c46e9a78ba6684310383b923ba0522d3522.tar.zst freebsd-ports-gnome-3b388c46e9a78ba6684310383b923ba0522d3522.zip |
- Fix overflow in host memory size calculation.
- Catch up with PG_CACHE removal on head.
PR: 211432
Diffstat (limited to 'emulators/virtualbox-ose/files')
2 files changed, 63 insertions, 0 deletions
diff --git a/emulators/virtualbox-ose/files/patch-src_VBox_Main_src-server_freebsd_PerformanceFreeBSD.cpp b/emulators/virtualbox-ose/files/patch-src_VBox_Main_src-server_freebsd_PerformanceFreeBSD.cpp new file mode 100644 index 000000000000..631547ac9cee --- /dev/null +++ b/emulators/virtualbox-ose/files/patch-src_VBox_Main_src-server_freebsd_PerformanceFreeBSD.cpp @@ -0,0 +1,24 @@ +--- src/VBox/Main/src-server/freebsd/PerformanceFreeBSD.cpp.orig 2017-07-27 13:18:27 UTC ++++ src/VBox/Main/src-server/freebsd/PerformanceFreeBSD.cpp +@@ -80,8 +80,10 @@ int CollectorFreeBSD::getHostMemoryUsage(ULONG *total, + cbParameter = sizeof(cPagesMemInactive); + if (!sysctlbyname("vm.stats.vm.v_inactive_count", &cPagesMemInactive, &cbParameter, NULL, 0)) + cProcessed++; ++#if __FreeBSD_version < 1200016 + cbParameter = sizeof(cPagesMemCached); + if (!sysctlbyname("vm.stats.vm.v_cache_count", &cPagesMemCached, &cbParameter, NULL, 0)) ++#endif + cProcessed++; + cbParameter = sizeof(cbPage); + if (!sysctlbyname("hw.pagesize", &cbPage, &cbParameter, NULL, 0)) +@@ -90,8 +92,8 @@ int CollectorFreeBSD::getHostMemoryUsage(ULONG *total, + if (cProcessed == 6) + { + *total = cbMemPhys / _1K; +- *used = cPagesMemUsed * (cbPage / _1K); +- *available = (cPagesMemFree + cPagesMemInactive + cPagesMemCached ) * (cbPage / _1K); ++ *used = (uint64_t)cPagesMemUsed * (cbPage / _1K); ++ *available = ((uint64_t)cPagesMemFree + cPagesMemInactive + cPagesMemCached) * (cbPage / _1K); + } + else + rc = VERR_NOT_SUPPORTED; diff --git a/emulators/virtualbox-ose/files/patch-src_VBox_Runtime_r3_freebsd_systemmem-freebsd.cpp b/emulators/virtualbox-ose/files/patch-src_VBox_Runtime_r3_freebsd_systemmem-freebsd.cpp new file mode 100644 index 000000000000..92af93646dd6 --- /dev/null +++ b/emulators/virtualbox-ose/files/patch-src_VBox_Runtime_r3_freebsd_systemmem-freebsd.cpp @@ -0,0 +1,39 @@ +--- src/VBox/Runtime/r3/freebsd/systemmem-freebsd.cpp.orig 2017-07-27 13:18:46 UTC ++++ src/VBox/Runtime/r3/freebsd/systemmem-freebsd.cpp +@@ -65,7 +65,6 @@ RTDECL(int) RTSystemQueryAvailableRam(uint64_t *pcb) + u_int cPagesMemFree = 0; + u_int cPagesMemInactive = 0; + u_int cPagesMemCached = 0; +- u_int cPagesMemUsed = 0; + int cbPage = 0; + size_t cbParameter; + int cProcessed = 0; +@@ -73,25 +72,23 @@ RTDECL(int) RTSystemQueryAvailableRam(uint64_t *pcb) + cbParameter = sizeof(cPagesMemFree); + if (sysctlbyname("vm.stats.vm.v_free_count", &cPagesMemFree, &cbParameter, NULL, 0)) + rc = RTErrConvertFromErrno(errno); +- cbParameter = sizeof(cPagesMemUsed); +- if ( RT_SUCCESS(rc) +- && sysctlbyname("vm.stats.vm.v_active_count", &cPagesMemUsed, &cbParameter, NULL, 0)) +- rc = RTErrConvertFromErrno(errno); + cbParameter = sizeof(cPagesMemInactive); + if ( RT_SUCCESS(rc) + && sysctlbyname("vm.stats.vm.v_inactive_count", &cPagesMemInactive, &cbParameter, NULL, 0)) + rc = RTErrConvertFromErrno(errno); ++#if __FreeBSD_version < 1200016 + cbParameter = sizeof(cPagesMemCached); + if ( RT_SUCCESS(rc) + && sysctlbyname("vm.stats.vm.v_cache_count", &cPagesMemCached, &cbParameter, NULL, 0)) + rc = RTErrConvertFromErrno(errno); ++#endif + cbParameter = sizeof(cbPage); + if ( RT_SUCCESS(rc) + && sysctlbyname("hw.pagesize", &cbPage, &cbParameter, NULL, 0)) + rc = RTErrConvertFromErrno(errno); + + if (RT_SUCCESS(rc)) +- *pcb = (cPagesMemFree + cPagesMemInactive + cPagesMemCached ) * cbPage; ++ *pcb = ((uint64_t)cPagesMemFree + cPagesMemInactive + cPagesMemCached) * cbPage; + + return rc; + } |