summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Marc Lenoir2017-09-30 09:24:50 +0200
committerJean-Marc Lenoir2017-09-30 09:24:50 +0200
commite81425a7f8d36400df2e3b40ac9e791de35d2cf0 (patch)
tree6d1b6ac5ef2e4d997899bffe9893473f90fd20e6
parent2965e8782be11ce0049f32fafa96b2d60c0282c8 (diff)
downloadaur-e81425a7f8d36400df2e3b40ac9e791de35d2cf0.tar.gz
Update to 14.0.0
-rw-r--r--.SRCINFO43
-rw-r--r--Makefile2
-rw-r--r--PKGBUILD88
-rw-r--r--config12
-rw-r--r--config.xml43
-rw-r--r--dkms.conf.in19
-rw-r--r--environments.xml8
-rwxr-xr-x[-rw-r--r--]unlocker.py21
-rw-r--r--vmci.patch10
-rw-r--r--vmmon.patch657
-rw-r--r--vmnet.patch483
-rw-r--r--vsock.patch24
12 files changed, 145 insertions, 1265 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 89f3b7c08347..64be24cbdb37 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = vmware-workstation
pkgdesc = The industry standard for running multiple operating systems as virtual machines on a single Linux PC.
- pkgver = 12.5.7_5813279
- pkgrel = 7
+ pkgver = 14.0.0
+ pkgrel = 1
url = https://www.vmware.com/products/workstation-for-linux.html
install = vmware-workstation.install
arch = x86_64
@@ -12,12 +12,10 @@ pkgbase = vmware-workstation
depends = dkms
depends = fuse2
depends = gksu
- depends = gtkmm
+ depends = gtkmm3
depends = libcanberra
+ depends = pcsclite
depends = hicolor-icon-theme
- depends = fontconfig
- depends = freetype2
- depends = zlib
optdepends = linux-headers: build modules against Arch kernel
provides = vmware-ovftool
conflicts = vmware-modules-dkms
@@ -31,14 +29,13 @@ pkgbase = vmware-workstation
backup = etc/vmware/hostd/config.xml
backup = etc/vmware/hostd/datastores.xml
backup = etc/vmware/hostd/dispatcher.xml
- backup = etc/vmware/hostd/environments.xml
backup = etc/vmware/hostd/proxy.xml
backup = etc/vmware/hostd/tagExtractor.xml
backup = etc/vmware/netmap.conf
backup = etc/vmware/ssl/hostd.ssl.config
backup = etc/pam.d/vmware-authd
backup = etc/profile.d/vmware.sh
- source = https://download3.vmware.com/software/wkst/file/VMware-Workstation-Full-12.5.7-5813279.x86_64.bundle
+ source = https://download3.vmware.com/software/wkst/file/VMware-Workstation-Full-14.0.0-6661328.x86_64.bundle
source = bootstrap
source = config
source = pam.d-vmware-authd
@@ -60,34 +57,34 @@ pkgbase = vmware-workstation
source = vmmon.patch
source = vmnet.patch
source = vsock.patch
- source = https://softwareupdate.vmware.com/cds/vmw-desktop/fusion/8.5.8/5824040/packages/com.vmware.fusion.tools.darwinPre15.zip.tar
- source = https://softwareupdate.vmware.com/cds/vmw-desktop/fusion/8.5.8/5824040/packages/com.vmware.fusion.tools.darwin.zip.tar
+ source = https://softwareupdate.vmware.com/cds/vmw-desktop/fusion/10.0.1/6754183/packages/com.vmware.fusion.tools.darwinPre15.zip.tar
+ source = https://softwareupdate.vmware.com/cds/vmw-desktop/fusion/10.0.1/6754183/packages/com.vmware.fusion.tools.darwin.zip.tar
source = unlocker.py
- sha256sums = 82178c109f987bb6740171572516f533a725f3563a26d628c769a88bcd4a84f7
+ sha256sums = f758e06d302b339c23f9c498d6dbf8a0182cfdfb71e4cdcc209ecfb68e20500a
sha256sums = 12e7b16abf8d7e858532edabb8868919c678063c566a6535855b194aac72d55e
- sha256sums = 55af509a4328fa88518e7008c65ff5598e6007e99ca2b4421a8f9b26126f6ff3
+ sha256sums = d9a5f8b919d52aa2f279d8eaf0bb495780eb9fd8bbc2c58bba223cdca78cc991
sha256sums = d50aa0a3fe94025178965d988e18d41eb60aa1ce2b28ee6e3ca15edeabfa2ca7
sha256sums = 8e4d08668a66be79a900521792b39c16a026cc90659241edee80b64e701bfbcd
sha256sums = 6f57e027f0eb95b7cfaf5d7c10089e99be5b9ccab7c3785fcc6f98dbecaf47bc
- sha256sums = d0806b6cb99af04232585def7b8043df3104b9b17470ea70abbd5bedc1e7ca16
+ sha256sums = 9f508d5f7ce4b69d9f40f6fb0ff0fb3d5b26a3c48658da994bf63975d1b589ab
sha256sums = 434cd4aa440d36b75ee20e0b588aaad874bb0d796173990bc4046667c66f5099
- sha256sums = 25c5aa39489d14a60f9cb30bdd7b21d36399c3355daee8bf5fbebcb62fe9f45f
+ sha256sums = 57c7568a89e8af1914cf7aea84d8fefd6e7af4155557081292344326d652ae70
sha256sums = 3c802523606184a5e8ebbe931d9c6c70d83ff8c6833b9f48aa264f0bd5a18a88
sha256sums = f9440479f3ae5ad0a39bba3150276627878bf83d6879444fb327c53a1dbb5a4d
sha256sums = 70301aa4eff4f42d7d39b276445dc7d8f44b8a0e184775e8a9e3055bb9d8590a
sha256sums = e3812b78158672c7d96b6a58877681462f3fbdfe99a948b32c80c755c8682450
sha256sums = f9297948eba55fbaa6c9d1846b92070f27fda17afe78b41ed0e4c2eaa452b56c
sha256sums = d7a9fbf39a0345ae2f14f7f389f30b1110f605d187e0c241e99bbb18993c250d
- sha256sums = 911a68af1c62f409e5e97c230ab67505ba2d1fe2e214d3ca4e0a11282d16efda
- sha256sums = f03c329dff2cf9a2fdfad938c4ce4ac5502fad5de1ef76a951dbc365748d1698
+ sha256sums = 05e26d8b21d190ebabb7f693998114d9d5991d9dfb71acb4d990293a65b6b487
+ sha256sums = 6ce902b1dab8fc69be253abd8e79017011985eca850ff7acc7282f9ab668e35d
sha256sums = 00be9dbef75266d882cbdc8cc0b8f78cd3b081d8ca9a3cbfa17cfc34b3f1a52f
- sha256sums = 6b0edcccad66ee1f971b675de4af704749d4677a4fc75a5026e47dc11435902c
- sha256sums = b04baffa8ee7b5be56aba3d49d9c06be5e34a31808a6f93b899408dbda9aef40
- sha256sums = 4c960079fec78682000a1c2e82dcaae69a6e91858dea641b707cf60674f3799f
- sha256sums = d7e6b21fef94b4d3fe655a68c20a9556a718a252826a899fb46c4f2475046954
- sha256sums = 01b187cb9a951190eda545e5d0235a98b0018f50942b4485844b627c3617d8d2
- sha256sums = 86702271b192c6116dbfe107206b10c0ab39d10cbbfcb53756dc09009f54f765
- sha256sums = 2ad5c0e7a31d7c2009e449fe16acfd5a9036b9d69258be82004cbd0ee41b42cf
+ sha256sums = 18ac27b66e54bb4841756957c017ff9d8de1f5ccdbffbdc0017eef1d5dbfe1fb
+ sha256sums = caa200a78a29e786753b27a42970ee86865c15fd529fd413080b3f053d541dd1
+ sha256sums = 4f07320c1f9e71e649cf3e98ec107ba5521d52e50ad781ccc9dc1b61817342ae
+ sha256sums = 61dc56d66de042f247a9d7354fcf5a93779c7ea16c1cd5a82d917598283e08f0
+ sha256sums = 3aeee4ddad2e94e5dbd8da3f995ad3f887f35a241d82e8c64a22f792c159cc44
+ sha256sums = 2c6076d55da659723fb7b7871baaee95df3bdcd90e448955ed1ec53df6a1f2d0
+ sha256sums = a3877c72e4eaed6546a2d066f73f71665c51ea87cc752655185d99340deb7d70
pkgname = vmware-workstation
diff --git a/Makefile b/Makefile
index d90d623df653..4b589921549f 100644
--- a/Makefile
+++ b/Makefile
@@ -1,9 +1,9 @@
#!/usr/bin/make -f
MODULES = \
- vmblock \
vmmon \
vmnet \
+ #vmblock \
#vmci \
#vsock
diff --git a/PKGBUILD b/PKGBUILD
index 602df6a3eff0..c6bde1885e77 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -14,12 +14,10 @@
#PKGEXT=.pkg.tar
pkgname=vmware-workstation
-pkgver=12.5.7_5813279
-_pkgver=${pkgver}
-#pkgver=12.5.7
-#_buildver=5813279
-#_pkgver=${pkgver}_${_buildver}
-pkgrel=7
+pkgver=14.0.0
+_buildver=6661328
+_pkgver=${pkgver}_${_buildver}
+pkgrel=1
pkgdesc='The industry standard for running multiple operating systems as virtual machines on a single Linux PC.'
arch=(x86_64)
url='https://www.vmware.com/products/workstation-for-linux.html'
@@ -38,13 +36,12 @@ depends=(
dkms
fuse2
gksu
- gtkmm
+ gtkmm3
libcanberra
+ pcsclite
hicolor-icon-theme
# needed to replace internal libs:
- fontconfig
- freetype2
- zlib
+ #zlib
)
optdepends=(
'linux-headers: build modules against Arch kernel'
@@ -58,7 +55,6 @@ backup=(
'etc/vmware/hostd/config.xml'
'etc/vmware/hostd/datastores.xml'
'etc/vmware/hostd/dispatcher.xml'
- 'etc/vmware/hostd/environments.xml'
'etc/vmware/hostd/proxy.xml'
'etc/vmware/hostd/tagExtractor.xml'
'etc/vmware/netmap.conf'
@@ -95,17 +91,17 @@ source=(
'vsock.patch'
)
sha256sums=(
- '82178c109f987bb6740171572516f533a725f3563a26d628c769a88bcd4a84f7'
+ 'f758e06d302b339c23f9c498d6dbf8a0182cfdfb71e4cdcc209ecfb68e20500a'
'12e7b16abf8d7e858532edabb8868919c678063c566a6535855b194aac72d55e'
- '55af509a4328fa88518e7008c65ff5598e6007e99ca2b4421a8f9b26126f6ff3'
+ 'd9a5f8b919d52aa2f279d8eaf0bb495780eb9fd8bbc2c58bba223cdca78cc991'
'd50aa0a3fe94025178965d988e18d41eb60aa1ce2b28ee6e3ca15edeabfa2ca7'
'8e4d08668a66be79a900521792b39c16a026cc90659241edee80b64e701bfbcd'
'6f57e027f0eb95b7cfaf5d7c10089e99be5b9ccab7c3785fcc6f98dbecaf47bc'
- 'd0806b6cb99af04232585def7b8043df3104b9b17470ea70abbd5bedc1e7ca16'
+ '9f508d5f7ce4b69d9f40f6fb0ff0fb3d5b26a3c48658da994bf63975d1b589ab'
'434cd4aa440d36b75ee20e0b588aaad874bb0d796173990bc4046667c66f5099'
- '25c5aa39489d14a60f9cb30bdd7b21d36399c3355daee8bf5fbebcb62fe9f45f'
+ '57c7568a89e8af1914cf7aea84d8fefd6e7af4155557081292344326d652ae70'
'3c802523606184a5e8ebbe931d9c6c70d83ff8c6833b9f48aa264f0bd5a18a88'
'f9440479f3ae5ad0a39bba3150276627878bf83d6879444fb327c53a1dbb5a4d'
@@ -114,13 +110,13 @@ sha256sums=(
'f9297948eba55fbaa6c9d1846b92070f27fda17afe78b41ed0e4c2eaa452b56c'
'd7a9fbf39a0345ae2f14f7f389f30b1110f605d187e0c241e99bbb18993c250d'
- '911a68af1c62f409e5e97c230ab67505ba2d1fe2e214d3ca4e0a11282d16efda'
- 'f03c329dff2cf9a2fdfad938c4ce4ac5502fad5de1ef76a951dbc365748d1698'
+ '05e26d8b21d190ebabb7f693998114d9d5991d9dfb71acb4d990293a65b6b487'
+ '6ce902b1dab8fc69be253abd8e79017011985eca850ff7acc7282f9ab668e35d'
'00be9dbef75266d882cbdc8cc0b8f78cd3b081d8ca9a3cbfa17cfc34b3f1a52f'
- '6b0edcccad66ee1f971b675de4af704749d4677a4fc75a5026e47dc11435902c'
- 'b04baffa8ee7b5be56aba3d49d9c06be5e34a31808a6f93b899408dbda9aef40'
- '4c960079fec78682000a1c2e82dcaae69a6e91858dea641b707cf60674f3799f'
- 'd7e6b21fef94b4d3fe655a68c20a9556a718a252826a899fb46c4f2475046954'
+ '18ac27b66e54bb4841756957c017ff9d8de1f5ccdbffbdc0017eef1d5dbfe1fb'
+ 'caa200a78a29e786753b27a42970ee86865c15fd529fd413080b3f053d541dd1'
+ '4f07320c1f9e71e649cf3e98ec107ba5521d52e50ad781ccc9dc1b61817342ae'
+ '61dc56d66de042f247a9d7354fcf5a93779c7ea16c1cd5a82d917598283e08f0'
)
options=(!strip emptydirs)
@@ -129,7 +125,7 @@ _isoimages=(freebsd linux linuxPreGlibc25 netware solaris windows winPre2k winPr
if [ -n "$_enable_macOS_guests" ]; then
-_vmware_fusion_ver=8.5.8_5824040
+_vmware_fusion_ver=10.0.1_6754183
# List of VMware Fusion versions: https://softwareupdate.vmware.com/cds/vmw-desktop/fusion/
makedepends+=(
@@ -143,9 +139,9 @@ source+=(
'unlocker.py'
)
sha256sums+=(
- '01b187cb9a951190eda545e5d0235a98b0018f50942b4485844b627c3617d8d2'
- '86702271b192c6116dbfe107206b10c0ab39d10cbbfcb53756dc09009f54f765'
- '2ad5c0e7a31d7c2009e449fe16acfd5a9036b9d69258be82004cbd0ee41b42cf'
+ '3aeee4ddad2e94e5dbd8da3f995ad3f887f35a241d82e8c64a22f792c159cc44'
+ '2c6076d55da659723fb7b7871baaee95df3bdcd90e448955ed1ec53df6a1f2d0'
+ 'a3877c72e4eaed6546a2d066f73f71665c51ea87cc752655185d99340deb7d70'
)
_fusion_isoimages=(darwin darwinPre15)
@@ -231,7 +227,7 @@ package() {
cp -r \
vmware-workstation/lib/* \
vmware-player-app/lib/* \
- vmware-vmx/lib/* \
+ vmware-vmx/{lib/*,roms} \
vmware-vprobe/lib/* \
vmware-workstation-server/{bin,lib,hostd} \
vmware-usbarbitrator/bin \
@@ -249,7 +245,7 @@ package() {
"$pkgdir/etc/vmware"
cp -r \
- vmware-vix-lib-Workstation1200/lib/Workstation-12.0.0 \
+ vmware-vix-lib-Workstation1400/lib/Workstation-14.0.0 \
vmware-vix-core/{lib/*,vixwrapper-config.txt} \
"$pkgdir/usr/lib/vmware-vix"
cp vmware-vix-core/vix-perl.tar.nogz "$pkgdir/usr/lib/vmware-vix/vix-perl.tar.gz"
@@ -269,7 +265,9 @@ package() {
cp -r \
vmware-player-app/etc/cups/* \
"$pkgdir/etc/cups"
-
+ cp -r \
+ vmware-player-app/extras/.thnumod \
+ "$pkgdir/etc/thnuclnt"
cp -r \
vmware-player-app/extras/thnucups \
"$pkgdir/usr/lib/cups/filter"
@@ -284,7 +282,6 @@ package() {
install -Dm 644 "vmware-tools-$isoimage/$isoimage.iso.sig" "$pkgdir/usr/lib/vmware/isoimages/$isoimage.iso.sig"
done
- install -Dm 644 "vmware-player-app/doc/LearnMore.txt" "$pkgdir/usr/share/licenses/$pkgname/Privacy.txt"
install -Dm 644 "vmware-workstation/doc/EULA" "$pkgdir/usr/share/licenses/$pkgname/VMware Workstation - EULA.txt"
install -Dm 644 "vmware-workstation/doc"/*open_source_licenses.txt "$pkgdir/usr/share/licenses/$pkgname"
mv "$pkgdir/usr/lib/vmware-ovftool/vmware.eula" "$pkgdir/usr/share/licenses/$pkgname/VMware OVF Tool component for Linux - EULA.txt"
@@ -326,15 +323,16 @@ package() {
"$pkgdir/usr/bin"/* \
"$pkgdir/usr/lib/vmware/bin"/* \
"$pkgdir/usr/lib/vmware/setup"/* \
- "$pkgdir/usr/lib/vmware/lib"/{wrapper-gtk24.sh,libgksu2.so.0/gksu-run-helper} \
+ "$pkgdir/usr/lib/vmware/lib"/libvmware-gksu.so/gksu-run-helper \
"$pkgdir/usr/lib/vmware-ovftool"/{ovftool,ovftool.bin} \
"$pkgdir/usr/lib/vmware-installer/$vmware_installer_version"/{vmware-installer,vmis-launcher} \
"$pkgdir/usr/lib/cups/filter"/* \
- "$pkgdir/usr/lib/vmware-vix/setup"/*
+ "$pkgdir/usr/lib/vmware-vix/setup"/* \
+ "$pkgdir/etc/thnuclnt/.thnumod"
chmod -R 600 "$pkgdir/etc/vmware/ssl"
chmod +s \
- "$pkgdir/usr/bin"/{vmware-authd,vmware-mount} \
+ "$pkgdir/usr/bin"/vmware-authd \
"$pkgdir/usr/lib/vmware/bin"/{vmware-vmx,vmware-vmx-debug,vmware-vmx-stats}
@@ -342,19 +340,22 @@ package() {
for link in \
licenseTool \
- thnuclnt \
vmplayer \
vmware \
vmware-app-control \
vmware-enter-serial \
vmware-fuseUI \
vmware-gksu \
+ vmware-hostd \
vmware-modconfig \
vmware-modconfig-console \
vmware-netcfg \
vmware-tray \
vmware-unity-helper \
+ vmware-vim-cmd \
vmware-vmblock-fuse \
+ vmware-vprobe \
+ vmware-wssc-adminTool \
vmware-zenity
do
ln -s /usr/lib/vmware/bin/appLoader "$pkgdir/usr/lib/vmware/bin/$link"
@@ -362,17 +363,12 @@ package() {
ln -s /usr/lib/vmware/icu "$pkgdir/etc/vmware/icu"
ln -s /usr/lib/vmware-ovftool/ovftool "$pkgdir/usr/bin/ovftool"
- ln -s /usr/lib/vmware/bin/appLoader "$pkgdir/etc/thnuclnt/.thnumod"
# Replace placeholder "variables" with real paths.
for file in \
- pango/pangorc \
- pango/pango.modules \
- pango/pangox.aliases \
- gtk-2.0/gdk-pixbuf.loaders \
- gtk-2.0/gtk.immodules
+ gtk-3.0/gdk-pixbuf.loaders
do
sed -i 's,@@LIBCONF_DIR@@,/usr/lib/vmware/libconf,g' "$pkgdir/usr/lib/vmware/libconf/etc/$file"
done
@@ -402,14 +398,14 @@ package() {
-e "s/@PKGVER@/$_pkgver/g" \
-i "$dkms_dir/dkms.conf"
- find vmware-vmx/lib/modules/source -mindepth 1 -exec bsdtar -xf {} -C "$dkms_dir" \;
- rm -r "$pkgdir/usr/lib/vmware/modules/source"
-
for module in vmblock vmci vmmon vmnet vsock; do
+ tar -xf "vmware-vmx/lib/modules/source/$module.tar" -C "$dkms_dir"
msg "Patching $module module for DKMS"
patch -p2 --read-only=ignore --directory="$dkms_dir/$module-only" < "$srcdir/$module.patch"
done
+ rm -r "$pkgdir/usr/lib/vmware/modules/source"
+
if [ -n "$_enable_macOS_guests" ]; then
msg "Patching VMware for macOS guest support"
python2 "$srcdir/unlocker.py" > /dev/null
@@ -423,12 +419,8 @@ fi
_create_database_file
- # use system font rendering
- ln -sf /usr/lib/libfreetype.so.6 "$pkgdir/usr/lib/vmware/lib/libfreetype.so.6/"
+ install -Dm 755 "$srcdir/vmware-profile.sh" "$pkgdir/etc/profile.d/vmware.sh"
# to solve bugs with incompatibles library versions:
- ln -sf /usr/lib/libz.so.1 "$pkgdir/usr/lib/vmware/lib/libz.so.1/"
- # if there is not a better solution, define environment variable VMWARE_USE_SHIPPED_LIBS
- install -Dm 755 "$srcdir/vmware-profile.sh" "$pkgdir/etc/profile.d/vmware.sh"
- ln -sf /usr/lib/libfontconfig.so.1 "$pkgdir/usr/lib/vmware/lib/libfontconfig.so.1/" # avoid a conflict with fontconfig when VMWARE_USE_SHIPPED_LIBS is defined
+ #ln -sf /usr/lib/libz.so.1 "$pkgdir/usr/lib/vmware/lib/libz.so.1/"
}
diff --git a/config b/config
index f71c789c9738..fce6aadfbde5 100644
--- a/config
+++ b/config
@@ -11,16 +11,16 @@ bindir = "/usr/bin"
vmware.fullpath = "/usr/bin/vmware"
vix.libdir = "/usr/lib/vmware-vix"
installerDefaults.componentDownloadEnabled = "no"
-installerDefaults.autoSoftwareUpdateEnabled.epoch = "5971871847"
+installerDefaults.autoSoftwareUpdateEnabled.epoch = "4641104763"
vix.config.version = "1"
-player.product.version = "12.5.6"
-installerDefaults.dataCollectionEnabled.epoch = "2097005183"
+player.product.version = "14.0.0"
+installerDefaults.dataCollectionEnabled.epoch = "7910652514"
installerDefaults.dataCollectionEnabled = "no"
installerDefaults.transferVersion = "1"
installerDefaults.autoSoftwareUpdateEnabled = "no"
-product.buildNumber = "5528349"
+product.buildNumber = "6661328"
authd.client.port = "902"
authd.proxy.nfc = "vmware-hostd:ha-nfc"
-product.version = "12.5.6"
-workstation.product.version = "12.5.6"
+product.version = "14.0.0"
+workstation.product.version = "14.0.0"
product.name = "VMware Workstation"
diff --git a/config.xml b/config.xml
index b08e4b150293..68f851ad72dd 100644
--- a/config.xml
+++ b/config.xml
@@ -45,15 +45,6 @@
<supportedVMs> 128 </supportedVMs>
</mockup>
- <!-- Procoproxy update forwarding configuration settings
- <updateForwarding>
- <enabled>false</enabled>
- <hostName>localhost</hostName>
- <port>5002</port>
- <useSsl>false</useSsl>
- </updateForwarding>
- -->
-
<!-- Frequency of memory checker -->
<!-- <memoryCheckerTimeInSecs> 30 </memoryCheckerTimeInSecs> -->
@@ -266,7 +257,8 @@
<ssl>
<doVersionCheck> false </doVersionCheck>
<libraryPath>/usr/lib/vmware</libraryPath>
- <useCompression> true </useCompression>
+ <!-- allowed SSL/TLS protocol versions -->
+ <!-- <protocols>tls1.0,tls1.1,tls1.2</protocols> -->
<!-- timeouts for the SSL handshake. the default is 20 sec. -->
<!-- <handshakeTimeoutMs>60000</handshakeTimeoutMs> -->
@@ -601,22 +593,6 @@
<!-- The file containing the hardware info mockup -->
<hwInfo>/etc/vmware/hostd/hwInfo.xml</hwInfo>
- <!-- Whether to use the real network list or just use mockups -->
- <!-- <loadRealNetworks> true </loadRealNetworks> -->
-
- <!-- Whether to use the real pciPassthru list or just use mockups -->
- <!-- <loadRealPciPassthru> true </loadRealPciPassthru> -->
-
- <!-- Whether to use the real datastore list or just use mockups -->
- <!-- <loadRealDatastores> true </loadRealDatastores> -->
-
- <!-- Whether to use the real rdm list or the mockup list. -->
- <!-- <loadRealRdmInfo> true </loadRealRdmInfo> -->
-
- <!-- Whether to use the real device (cd,flp,serial,||,sound) -->
- <!-- list or the mockup. -->
- <!-- <loadRealHwInfo> true </loadRealHwInfo> -->
-
<!-- Controls to enable/disable expressions in the RDM filter -->
<!-- <rdmfilter> -->
<!-- Only show disks that are attached to shared storage. -->
@@ -629,12 +605,6 @@
<!-- <UsedAsVmRdm>true</UsedAsVmRdm> -->
<!-- </rdmfilter> -->
- <!-- Whether to use the real rdm list or the mockup list. -->
- <!-- <loadRealPassthroughInfo> true </loadRealPassthroughInfo> -->
-
- <!-- Whether to populate usb info from the mockup list. -->
- <!-- <loadRealUsbInfo> true </loadRealUsbInfo> -->
-
<!-- Disable Resource Pool Initialization -->
<!-- <disableResourcePoolInit> false </disableResourcePoolInit> -->
@@ -821,6 +791,8 @@
<cimsvc>
<path>libcimsvc.so</path>
<enabled>false</enabled>
+ <maxSelEntries>40</maxSelEntries>
+ <pollTime>90</pollTime>
</cimsvc>
<directorysvc>
@@ -887,6 +859,11 @@
<enabled>false</enabled>
</cbrcsvc>
+ <hostspecsvc>
+ <path>libhostspecsvc.so</path>
+ <enabled>false</enabled>
+ </hostspecsvc>
+
</plugins>
@@ -900,4 +877,4 @@
</locale>
-->
-</config>
+</config> \ No newline at end of file
diff --git a/dkms.conf.in b/dkms.conf.in
index 66393181850b..64c93aa0c18c 100644
--- a/dkms.conf.in
+++ b/dkms.conf.in
@@ -6,17 +6,18 @@ MAKE="make KVERSION=$kernelver SRCDIR=/usr/src/$PACKAGE_NAME-$PACKAGE_VERSION"
CLEAN="make clean"
AUTOINSTALL="YES"
-BUILT_MODULE_NAME[0]="vmblock"
-BUILT_MODULE_LOCATION[0]='vmblock-only'
-DEST_MODULE_LOCATION[0]="/kernel/fs/vmblock"
+BUILT_MODULE_NAME[0]="vmmon"
+BUILT_MODULE_LOCATION[0]='vmmon-only'
+DEST_MODULE_LOCATION[0]="/kernel/drivers/misc"
-BUILT_MODULE_NAME[1]="vmmon"
-BUILT_MODULE_LOCATION[1]='vmmon-only'
-DEST_MODULE_LOCATION[1]="/kernel/drivers/misc"
+BUILT_MODULE_NAME[1]="vmnet"
+BUILT_MODULE_LOCATION[1]='vmnet-only'
+DEST_MODULE_LOCATION[1]="/kernel/drivers/net"
-BUILT_MODULE_NAME[2]="vmnet"
-BUILT_MODULE_LOCATION[2]='vmnet-only'
-DEST_MODULE_LOCATION[2]="/kernel/drivers/net"
+# seems that this module is never used
+#BUILT_MODULE_NAME[2]="vmblock"
+#BUILT_MODULE_LOCATION[2]='vmblock-only'
+#DEST_MODULE_LOCATION[2]="/kernel/fs/vmblock"
# vmci is already provided by the kernel with vmw_vmci
#BUILT_MODULE_NAME[3]="vmci"
diff --git a/environments.xml b/environments.xml
index 93a12dac54b8..57a099d3a52d 100644
--- a/environments.xml
+++ b/environments.xml
@@ -35,4 +35,12 @@
<Descriptor> /etc/vmware/hostd/env/ws-hw12.xml </Descriptor>
<Options> /etc/vmware/hostd/env/vmconfigoption-ws-hw12.xml</Options>
</Cfg>
+ <Cfg id = "10">
+ <Descriptor> /etc/vmware/hostd/env/ws-hw13.xml </Descriptor>
+ <Options> /etc/vmware/hostd/env/vmconfigoption-ws-hw13.xml</Options>
+ </Cfg>
+ <Cfg id = "11">
+ <Descriptor> /etc/vmware/hostd/env/ws-hw14.xml </Descriptor>
+ <Options> /etc/vmware/hostd/env/vmconfigoption-ws-hw14.xml</Options>
+ </Cfg>
</Environment>
diff --git a/unlocker.py b/unlocker.py
index 664c11d55c08..90fc9e0446d8 100644..100755
--- a/unlocker.py
+++ b/unlocker.py
@@ -42,6 +42,7 @@ Offset Length Struct Type Description
"""
from __future__ import print_function
+import codecs
import os
import sys
import struct
@@ -60,8 +61,8 @@ if sys.platform == 'win32' \
def rot13(s):
chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz'
trans = chars[26:] + chars[:26]
- rot_char = lambda c: trans[chars.find(c)] if chars.find(c) > -1 else c
- return ''.join(rot_char(c) for c in s)
+ rotchar = lambda c: trans[chars.find(c)] if chars.find(c) > -1 else c
+ return ''.join(rotchar(c) for c in s)
def bytetohex(data):
@@ -172,7 +173,7 @@ def patchkeys(f, key):
# Write new data for key
f.seek(offset + 24)
- smc_new_data = rot13('bheuneqjbexolgurfrjbeqfthneqrqcy')
+ smc_new_data = codecs.encode('bheuneqjbexolgurfrjbeqfthneqrqcy', 'rot_13')
f.write(smc_new_data.encode('UTF-8'))
f.flush()
@@ -194,7 +195,7 @@ def patchkeys(f, key):
# Write new data for key
f.seek(offset + 24)
- smc_new_data = rot13('rnfrqbagfgrny(p)NccyrPbzchgreVap')
+ smc_new_data = codecs.encode('rnfrqbagfgrny(p)NccyrPbzchgreVap', 'rot_13')
f.write(smc_new_data.encode('UTF-8'))
f.flush()
@@ -300,14 +301,14 @@ def patchbase(name):
'\x02\x00\x00\x00\x00\x00\x00\x00'
'\x00\x00\x00\x00\x00\x00\x00\x00'
'\x00\x00\x00\x00\x00\x00\x00\x00'
- '\xBE'
+ '\x3E'
)
# Read file into string variable
base = f.read()
# Loop thorugh each entry and set top bit
- # 0xBE --> 0xBF
+ # 0x3E --> 0x3F
offset = 0
while offset < len(base):
offset = base.find(darwin, offset)
@@ -315,9 +316,9 @@ def patchbase(name):
break
f.seek(offset + 32)
flag = f.read(1)
- if flag == '\xBE':
+ if flag == '\x3E':
f.seek(offset + 32)
- f.write('\xBF')
+ f.write('\x3F')
print('GOS Patched flag @: ' + hex(offset))
else:
print('GOS Unknown flag @: ' + hex(offset) + '/' + hex(int(flag)))
@@ -372,7 +373,7 @@ def main():
vmx_debug = joinpath(vmx_path, 'vmware-vmx-debug')
vmx_stats = joinpath(vmx_path, 'vmware-vmx-stats')
vmx_version = subprocess.check_output(["vmplayer", "-v"])
- if vmx_version.startswith('VMware Player 12'):
+ if vmx_version.startswith('VMware Player 14'):
vmx_so = True
vmwarebase = '/usr/lib/vmware/lib/libvmwarebase.so/libvmwarebase.so'
else:
@@ -425,4 +426,4 @@ def main():
if __name__ == '__main__':
- main()
+ main() \ No newline at end of file
diff --git a/vmci.patch b/vmci.patch
index fcc712a23150..260c74c87588 100644
--- a/vmci.patch
+++ b/vmci.patch
@@ -100,7 +100,7 @@ index f676166..9e42f3f 100644
return result;
}
-@@ -2473,7 +2485,11 @@ vmci_exit(void)
+@@ -2480,7 +2505,11 @@ vmci_exit(void)
if (guestDeviceInit) {
pci_unregister_driver(&vmci_driver);
@@ -109,10 +109,10 @@ index f676166..9e42f3f 100644
+#else
+ kvfree(data_buffer);
+#endif
+ data_buffer = NULL;
guestDeviceInit = FALSE;
}
-
-@@ -2482,7 +2498,7 @@ vmci_exit(void)
+@@ -2490,7 +2519,7 @@ vmci_exit(void)
VMCI_HostCleanup();
@@ -283,12 +283,12 @@ diff --git a/vmci/shared/vmci_kernel_if.h b/vmci/shared/vmci_kernel_if.h
index 9def671..082fe59 100644
--- a/vmci/shared/vmci_kernel_if.h
+++ b/vmci/shared/vmci_kernel_if.h
-@@ -93,7 +93,7 @@
+@@ -100,7 +100,7 @@
typedef Semaphore VMCIEvent;
typedef Semaphore VMCIMutex;
typedef World_ID VMCIHostVmID;
- typedef uint32 VMCIHostUser;
+ typedef uint32_t VMCIHostUser;
typedef PPN *VMCIQPGuestMem;
- #elif defined(linux)
+ #elif defined(__linux__)
typedef spinlock_t VMCILock;
diff --git a/vmmon.patch b/vmmon.patch
index a61c1510e6a7..ac4bb2a80033 100644
--- a/vmmon.patch
+++ b/vmmon.patch
@@ -25,8 +25,8 @@ index bf805e0..9aac585 100644
-EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE)
+EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) $(LINUXINCLUDE)
- EXTRA_CFLAGS += $(call vm_check_build, $(SRCROOT)/autoconf/smpcall.c, -DVMW_HAVE_SMP_CALL_3ARG, )
- EXTRA_CFLAGS += $(call vm_check_build, $(SRCROOT)/autoconf/tsc_khz.c, -DVMW_HAVE_TSC_KHZ, )
+ obj-m += $(DRIVER).o
+
diff --git a/vmmon/include/compat_module.h b/vmmon/include/compat_module.h
index 2af7372..729aedc 100644
--- a/vmmon/include/compat_module.h
@@ -49,14 +49,13 @@ diff --git a/vmmon/linux/driver.c b/vmmon/linux/driver.c
index 87cf45b..5390a93 100644
--- a/vmmon/linux/driver.c
+++ b/vmmon/linux/driver.c
-@@ -126,7 +126,16 @@ static struct vm_operations_struct vmuser_mops = {
- #endif
+@@ -109,7 +109,15 @@ static struct vm_operations_struct vmuser_mops = {
+ .fault = LinuxDriverFault
};
-static struct file_operations vmuser_fops;
+static struct file_operations vmuser_fops = {
+ .owner = THIS_MODULE,
-+ .poll = LinuxDriverPoll,
+ .unlocked_ioctl = LinuxDriver_Ioctl,
+ .compat_ioctl = LinuxDriver_Ioctl,
+ .open = LinuxDriver_Open,
@@ -67,26 +66,8 @@ index 87cf45b..5390a93 100644
static struct timer_list tscTimer;
static Atomic_uint32 tsckHz;
static VmTimeStart tsckHzStartTime;
-@@ -256,7 +265,7 @@ static void
- LinuxDriverInitTSCkHz(void)
- {
- unsigned int khz;
--
-+
- khz = compat_tsc_khz();
- if (khz != 0) {
- Atomic_Write(&tsckHz, khz);
-@@ -271,7 +280,7 @@ LinuxDriverInitTSCkHz(void)
- add_timer(&tscTimer);
- }
-
--
-+
- /*
- *----------------------------------------------------------------------
- *
-@@ -319,21 +328,6 @@ init_module(void)
- linuxState.fastClockPriority = -20;
+@@ -295,20 +304,6 @@ init_module(void)
+ linuxState.fastClockRate = 0;
linuxState.swapSize = VMMON_UNKNOWN_SWAP_SIZE;
- /*
@@ -97,7 +78,6 @@ index 87cf45b..5390a93 100644
-
- memset(&vmuser_fops, 0, sizeof vmuser_fops);
- vmuser_fops.owner = THIS_MODULE;
-- vmuser_fops.poll = LinuxDriverPoll;
- vmuser_fops.unlocked_ioctl = LinuxDriver_Ioctl;
- vmuser_fops.compat_ioctl = LinuxDriver_Ioctl;
- vmuser_fops.open = LinuxDriver_Open;
@@ -107,7 +87,7 @@ index 87cf45b..5390a93 100644
#ifdef VMX86_DEVEL
devel_init_module();
linuxState.minor = 0;
-@@ -389,7 +383,9 @@ cleanup_module(void)
+@@ -364,7 +373,9 @@ cleanup_module(void)
#ifdef VMX86_DEVEL
unregister_chrdev(linuxState.major, linuxState.deviceName);
#else
@@ -118,7 +98,7 @@ index 87cf45b..5390a93 100644
#endif
Log("Module %s: unloaded\n", linuxState.deviceName);
-@@ -1287,7 +1283,7 @@ LinuxDriverReadTSC(void *data, // OUT: TSC values
+@@ -977,7 +988,7 @@ LinuxDriverReadTSC(void *data, // OUT: TSC values
*-----------------------------------------------------------------------------
*/
@@ -127,20 +107,11 @@ index 87cf45b..5390a93 100644
LinuxDriverSyncReadTSCs(uint64 *delta) // OUT: TSC max - TSC min
{
TSCDelta tscDelta;
-@@ -1976,7 +1972,7 @@ LinuxDriver_Ioctl(struct file *filp, // IN:
- break;
- }
-
-- default:
-+ default:
- Warning("Unknown ioctl %d\n", iocmd);
- retval = -EINVAL;
- }
diff --git a/vmmon/linux/hostif.c b/vmmon/linux/hostif.c
index fd32013..583d6da 100644
--- a/vmmon/linux/hostif.c
+++ b/vmmon/linux/hostif.c
-@@ -37,6 +37,9 @@
+@@ -36,6 +36,9 @@
#include <linux/vmalloc.h>
#include <linux/slab.h>
@@ -150,16 +121,16 @@ index fd32013..583d6da 100644
#include <linux/preempt.h>
#include <linux/poll.h>
-@@ -73,6 +76,7 @@
+@@ -51,6 +54,7 @@
#include <linux/capability.h>
#include <linux/kthread.h>
#include <linux/wait.h>
+#include <asm/apic.h>
+ #include <linux/hrtimer.h>
#include <linux/signal.h>
- #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
#include <linux/taskstats_kern.h> // For linux/sched/signal.h without version check
-@@ -99,6 +99,37 @@
- #include "vmmonInt.h"
+@@ -75,6 +79,37 @@
+ #include "pgtbl.h"
#include "versioned_atomic.h"
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)
@@ -193,10 +164,10 @@ index fd32013..583d6da 100644
+ #endif
+}
+
- /*
- * Determine if we can use high resolution timers.
- */
-@@ -142,6 +146,10 @@
+ #if !defined(CONFIG_HIGH_RES_TIMERS)
+ #error CONFIG_HIGH_RES_TIMERS required for acceptable performance
+ #endif
+@@ -115,6 +149,10 @@
*/
#define LOCKED_PAGE_SLACK 10000
@@ -207,237 +178,7 @@ index fd32013..583d6da 100644
static struct {
Atomic_uint64 uptimeBase;
VersionedAtomic version;
-@@ -438,7 +446,7 @@
- * HostIF_WakeUpYielders --
- *
- * Wakeup vCPUs that are waiting for the current vCPU.
-- *
-+ *
- * Results:
- * The requested vCPUs are nudged if they are sleeping due to
- * Vmx86_YieldToSet.
-@@ -521,7 +529,7 @@
- * None
- *
- * Side effects:
-- * Should be a very low contention lock.
-+ * Should be a very low contention lock.
- * The current thread is rescheduled if the lock is busy.
- *
- *-----------------------------------------------------------------------------
-@@ -564,7 +572,7 @@
- * HostIF_GlobalLockIsHeld --
- *
- * Determine if the global lock is held by the current thread.
-- *
-+ *
- * Results:
- * TRUE if yes
- * FALSE if no
-@@ -594,7 +602,7 @@
- * None
- *
- * Side effects:
-- * Should be a very low contention lock.
-+ * Should be a very low contention lock.
- * The current thread is rescheduled if the lock is busy.
- *
- *-----------------------------------------------------------------------------
-@@ -729,7 +737,7 @@
- HostIFHostMemInit(VMDriver *vm) // IN:
- {
- VMHost *vmh = vm->vmhost;
--
-+
- vmh->lockedPages = PhysTrack_Alloc(vm);
- if (!vmh->lockedPages) {
- return -1;
-@@ -824,8 +832,8 @@
- *
- * HostIF_FreeMachinePage --
- *
-- * Free an anonymous machine page allocated by
-- * HostIF_AllocMachinePage(). This page is not tracked in any
-+ * Free an anonymous machine page allocated by
-+ * HostIF_AllocMachinePage(). This page is not tracked in any
- * phystracker.
- *
- * Results:
-@@ -1118,7 +1126,7 @@
- * Results:
- * prevents INTR #0x2d (IRQ 13) from being generated --
- * assume that Int16 works for interrupt reporting
-- *
-+ *
- *
- * Side effects:
- * PIC
-@@ -1133,7 +1141,7 @@
-
- uint8 val = inb(0xA1);
-
-- if (!(val & mask)) {
-+ if (!(val & mask)) {
- val = val | mask;
- outb(val, 0xA1);
- }
-@@ -1149,7 +1157,7 @@
- * If ppages is NULL, pages are only marked as dirty.
- *
- * Results:
-- * Zero on success, non-zero on failure.
-+ * Zero on success, non-zero on failure.
- *
- * Side effects:
- * None
-@@ -1165,14 +1173,16 @@
- int retval;
-
- down_read(&current->mm->mmap_sem);
--#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0)
-- retval = get_user_pages((unsigned long)uvAddr, numPages, 0, ppages, NULL);
--#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)
-- retval = get_user_pages((unsigned long)uvAddr, numPages, 0, 0, ppages, NULL);
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 99)
-+ retval = get_user_pages((unsigned long)uvAddr,
- #else
- retval = get_user_pages(current, current->mm, (unsigned long)uvAddr,
-- numPages, 0, 0, ppages, NULL);
- #endif
-+ numPages, 0,
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 0)
-+ 0,
-+#endif
-+ ppages, NULL);
- up_read(&current->mm->mmap_sem);
-
- return retval != numPages;
-@@ -1184,11 +1194,11 @@
- *
- * HostIF_IsLockedByMPN --
- *
-- * Checks if mpn was locked using allowMultipleMPNsPerVA.
-+ * Checks if mpn was locked using allowMultipleMPNsPerVA.
- *
- * Results:
- * TRUE if mpn is present in the physTracker.
-- *
-+ *
- *
- * Side effects:
- * None.
-@@ -1310,7 +1320,7 @@
-
- vpn = VA_2_VPN((VA)addr);
- e = MemTrack_LookupVPN(vm->memtracker, vpn);
--
-+
- if (e == NULL) {
- return PAGE_UNLOCK_NOT_TRACKED;
- }
-@@ -1356,7 +1366,7 @@
- {
- void *va = VA64ToPtr(uAddr);
- MemTrackEntry *e;
--
-+
- /*
- * Verify for debugging that VA and MPN make sense.
- * PgtblVa2MPN() can fail under high memory pressure.
-@@ -1374,7 +1384,7 @@
- }
-
- /*
-- * Verify that this MPN was locked with
-+ * Verify that this MPN was locked with
- * HostIF_LockPage(allowMultipleMPNsPerVA = TRUE).
- * That means that this MPN should not be in the MemTracker.
- */
-@@ -1387,7 +1397,7 @@
- return PAGE_UNLOCK_MISMATCHED_TYPE;
- }
- }
--#endif
-+#endif
-
- HOST_UNLOCK_PFN_BYMPN(vm, mpn);
-
-@@ -1395,7 +1405,7 @@
- }
-
-
--static void
-+static void
- UnlockEntry(void *clientData, // IN:
- MemTrackEntry *entryPtr) // IN:
- {
-@@ -1458,11 +1468,11 @@
- *
- * HostIF_AllocKernelMem
- *
-- * Allocate some kernel memory for the driver.
-+ * Allocate some kernel memory for the driver.
- *
- * Results:
-- * The address allocated or NULL on error.
-- *
-+ * The address allocated or NULL on error.
-+ *
- *
- * Side effects:
- * memory is malloced
-@@ -1474,8 +1484,8 @@
- int wired) // IN:
- {
- void * ptr = kmalloc(size, GFP_KERNEL);
--
-- if (ptr == NULL) {
-+
-+ if (ptr == NULL) {
- Warning("%s failed (size=%p)\n", __func__, (void*)size);
- }
-
-@@ -1503,7 +1513,7 @@
- HostIF_AllocPage(void)
- {
- VA kvAddr;
--
-+
- kvAddr = __get_free_page(GFP_KERNEL);
- if (kvAddr == 0) {
- Warning("%s: __get_free_page() failed\n", __func__);
-@@ -1518,7 +1528,7 @@
- *
- * HostIF_FreeKernelMem
- *
-- * Free kernel memory allocated for the driver.
-+ * Free kernel memory allocated for the driver.
- *
- * Results:
- * None.
-@@ -1557,7 +1567,7 @@
- * from the kernel without causing the host to die or to be really upset.
- *
- * Results:
-- * The maximum number of pages that can be locked.
-+ * The maximum number of pages that can be locked.
- *
- * Side effects:
- * none
-@@ -1585,9 +1595,9 @@
- * Use the memory information linux exports as of late for a more
- * precise estimate of locked memory. All kernel page-related structures
- * (slab, pagetable) are as good as locked. Unevictable includes things
-- * that are explicitly marked as such (like mlock()). Huge pages are
-- * also as good as locked, since we don't use them. Lastly, without
-- * available swap, anonymous pages become locked in memory as well.
-+ * that are explicitly marked as such (like mlock()). Huge pages are
-+ * also as good as locked, since we don't use them. Lastly, without
-+ * available swap, anonymous pages become locked in memory as well.
- */
-
- unsigned int forHost;
-@@ -1594,16 +1625,11 @@ HostIF_EstimateLockedPageLimit(const VMDriver* vm, // IN
+@@ -1516,16 +1555,11 @@ HostIF_EstimateLockedPageLimit(const VMDriver* vm, // IN
unsigned int reservedPages = MEMDEFAULTS_MIN_HOST_PAGES;
unsigned int hugePages = (vm == NULL) ? 0 :
BYTES_2_PAGES(vm->memInfo.hugePageBytes);
@@ -458,365 +199,3 @@ index fd32013..583d6da 100644
unsigned int swapPages = BYTES_2_PAGES(linuxState.swapSize);
if (anonPages > swapPages) {
-@@ -1607,7 +1617,7 @@
- unsigned int swapPages = BYTES_2_PAGES(linuxState.swapSize);
-
- if (anonPages > swapPages) {
-- lockedPages += anonPages - swapPages;
-+ lockedPages += anonPages - swapPages;
- }
- forHost = lockedPages + LOCKED_PAGE_SLACK;
- if (forHost > totalPhysicalPages) {
-@@ -1652,7 +1662,7 @@
- *----------------------------------------------------------------------
- */
-
--void
-+void
- HostIF_WaitForFreePages(unsigned int timeoutMs) // IN:
- {
- static unsigned count;
-@@ -1677,20 +1687,20 @@
- * timeofday to have small drift (due to NTP rate correction, etc).
- * We handle this by rebasing the jiffies based monotonic clock
- * every second (see HostIFUptimeResyncMono).
-- *
-+ *
- * Results:
- * The uptime, in units of UPTIME_FREQ. Also returns the jiffies
- * value that was used in the monotonic time calculation.
- *
- * Side effects:
-- * May reset the uptime base in the case gettimeofday warp was
-+ * May reset the uptime base in the case gettimeofday warp was
- * detected.
- *
- *----------------------------------------------------------------------
- */
-
- static uint64
--HostIFReadUptimeWork(unsigned long *j) // OUT: current jiffies
-+HostIFReadUptimeWork(unsigned long *j) // OUT: current jiffies
- {
- struct timeval tv;
- uint64 monotime, uptime, upBase, monoBase;
-@@ -1712,14 +1722,14 @@
-
- do_gettimeofday(&tv);
- upBase = Atomic_Read64(&uptimeState.uptimeBase);
--
-+
- monotime = (uint64)(jifs - jifBase) * (UPTIME_FREQ / HZ);
- monotime += monoBase;
-
- uptime = tv.tv_usec * (UPTIME_FREQ / 1000000) + tv.tv_sec * UPTIME_FREQ;
- uptime += upBase;
--
-- /*
-+
-+ /*
- * Use the jiffies based monotonic time to sanity check gettimeofday.
- * If they differ by more than one second, assume the time of day has
- * been warped, and use the jiffies time to undo (most of) the warp.
-@@ -1731,7 +1741,7 @@
- uint64 newUpBase = monotime - (uptime - upBase);
-
- attempts++;
-- if (!Atomic_CMPXCHG64(&uptimeState.uptimeBase, &upBase, &newUpBase) &&
-+ if (!Atomic_CMPXCHG64(&uptimeState.uptimeBase, &upBase, &newUpBase) &&
- attempts < 5) {
- /* Another thread updated uptimeBase. Recalculate uptime. */
- goto retry;
-@@ -1772,7 +1782,7 @@
- unsigned long jifs;
- uintptr_t flags;
-
-- /*
-+ /*
- * Read the uptime and the corresponding jiffies value. This will
- * also correct the uptime (which is based on time of day) if needed
- * before we rebase monotonic time (which is based on jiffies).
-@@ -1780,7 +1790,7 @@
-
- uint64 uptime = HostIFReadUptimeWork(&jifs);
-
-- /*
-+ /*
- * Every second, recalculate monoBase and jiffiesBase to squash small
- * drift between gettimeofday and jiffies. Also, this prevents
- * (jiffies - jiffiesBase) wrap on 32-bits.
-@@ -1825,8 +1835,8 @@
-
- uptimeState.jiffiesBase = jiffies;
- do_gettimeofday(&tv);
-- Atomic_Write64(&uptimeState.uptimeBase,
-- -(tv.tv_usec * (UPTIME_FREQ / 1000000) +
-+ Atomic_Write64(&uptimeState.uptimeBase,
-+ -(tv.tv_usec * (UPTIME_FREQ / 1000000) +
- tv.tv_sec * UPTIME_FREQ));
-
- init_timer(&uptimeState.timer);
-@@ -1954,7 +1964,7 @@
- *-----------------------------------------------------------------------------
- */
-
--int
-+int
- HostIF_CopyToUser(void *dst, // OUT
- const void *src, // IN
- unsigned int len) // IN
-@@ -1967,15 +1977,15 @@
- *-----------------------------------------------------------------------------
- *
- * HostIF_MapCrossPage --
-- *
-- * Obtain kernel pointer to crosspage.
- *
-- * We must return a VA that is obtained through a kernel mapping, so that
-+ * Obtain kernel pointer to crosspage.
-+ *
-+ * We must return a VA that is obtained through a kernel mapping, so that
- * the mapping never goes away (see bug 29753).
- *
-- * However, the LA corresponding to that VA must not overlap with the
-- * monitor (see bug 32922). The userland code ensures that by only
-- * allocating cross pages from low memory. For those pages, the kernel
-+ * However, the LA corresponding to that VA must not overlap with the
-+ * monitor (see bug 32922). The userland code ensures that by only
-+ * allocating cross pages from low memory. For those pages, the kernel
- * uses a permanent mapping, instead of a temporary one with a high LA.
- *
- * Results:
-@@ -2163,7 +2173,7 @@
- * None
- *
- * Side effects:
-- * Can wake up the thread blocked on this lock.
-+ * Can wake up the thread blocked on this lock.
- *
- *-----------------------------------------------------------------------------
- */
-@@ -2186,7 +2196,7 @@
- * HostIF_VMLockIsHeld --
- *
- * Determine if the per-VM lock is held by the current thread.
-- *
-+ *
- * Results:
- * TRUE if yes
- * FALSE if no
-@@ -2242,14 +2252,14 @@
- *
- *----------------------------------------------------------------------
- */
--
-+
- static Bool
- isVAReadable(VA r) // IN:
- {
- mm_segment_t old_fs;
- uint32 dummy;
- int ret;
--
-+
- old_fs = get_fs();
- set_fs(get_ds());
- r = APICR_TO_ADDR(r, APICR_VERSION);
-@@ -2324,7 +2334,7 @@
- Bool setVMPtr) // IN: set a pointer to the APIC's virtual address
- {
- MA ma = APIC_GetMA();
--
-+
- if (ma == (MA)-1) {
- return FALSE;
- }
-@@ -2425,7 +2435,7 @@
- * Perform the semaphore wait (P) operation, possibly blocking.
- *
- * Result:
-- * 1 (which equals MX_WAITNORMAL) if success,
-+ * 1 (which equals MX_WAITNORMAL) if success,
- * negated error code otherwise.
- *
- * Side-effects:
-@@ -2434,7 +2444,7 @@
- *-----------------------------------------------------------------------------
- */
-
--int
-+int
- HostIF_SemaphoreWait(VMDriver *vm, // IN:
- Vcpuid vcpuid, // IN:
- uint64 *args) // IN:
-@@ -2457,7 +2467,7 @@
- {
- struct poll_wqueues table;
- unsigned int mask;
--
-+
- poll_initwait(&table);
- current->state = TASK_INTERRUPTIBLE;
- mask = file->f_op->poll(file, &table.pt);
-@@ -2532,7 +2542,7 @@
- *-----------------------------------------------------------------------------
- */
-
--void
-+void
- HostIF_SemaphoreForceWakeup(VMDriver *vm, // IN:
- const VCPUSet *vcs) // IN:
- {
-@@ -2920,7 +2930,7 @@
- if (ptr == NULL) {
- return -ENOMEM;
- }
--
-+
- if (kernelBuffer) {
- memcpy(buf, ptr, PAGE_SIZE);
- } else {
-@@ -3106,7 +3116,7 @@
- * Side effects:
- * None.
- *
-- *----------------------------------------------------------------------
-+ *----------------------------------------------------------------------
- */
-
- uint32
-@@ -3124,18 +3134,18 @@
- *
- * Wake up the fast clock thread. Can't do this from the timer
- * callback, because it holds locks that the scheduling code
-- * might take.
-+ * might take.
- *
- * Results:
- * None.
-- *
-+ *
- * Side effects:
- * None.
- *
- *----------------------------------------------------------------------
- */
-
--static void
-+static void
- HostIFWakeupClockThread(unsigned long data) //IN:
- {
- wake_up_process(linuxState.fastClockThread);
-@@ -3146,7 +3156,7 @@
- *----------------------------------------------------------------------
- *
- * HostIFTimerCallback --
-- *
-+ *
- * Schedule a tasklet to wake up the fast clock thread.
- *
- * Results:
-@@ -3157,8 +3167,8 @@
- *
- *----------------------------------------------------------------------
- */
--
--static enum hrtimer_restart
-+
-+static enum hrtimer_restart
- HostIFTimerCallback(struct hrtimer *timer) //IN:
- {
- tasklet_schedule(&timerTasklet);
-@@ -3171,7 +3181,7 @@
- *----------------------------------------------------------------------
- *
- * HostIFScheduleHRTimeout --
-- *
-+ *
- * Schedule an hrtimer to wake up the fast clock thread.
- *
- * Results:
-@@ -3183,7 +3193,7 @@
- *----------------------------------------------------------------------
- */
-
--static void
-+static void
- HostIFScheduleHRTimeout(ktime_t *expires) //IN:
- {
- struct hrtimer t;
-@@ -3201,7 +3211,7 @@
- if (hrtimer_active(&t)) {
- schedule();
- }
--
-+
- hrtimer_cancel(&t);
- __set_current_state(TASK_RUNNING);
- }
-@@ -3224,7 +3234,7 @@
- * Side effects:
- * none.
- *
-- *----------------------------------------------------------------------
-+ *----------------------------------------------------------------------
- */
-
- static long
-@@ -3257,7 +3267,7 @@
- */
-
- int
--HostIFStartTimer(Bool rateChanged, //IN: Did rate change?
-+HostIFStartTimer(Bool rateChanged, //IN: Did rate change?
- unsigned int rate, //IN: current clock rate
- struct file *filp) //IN: /dev/rtc descriptor
- {
-@@ -3267,14 +3277,14 @@
- int timerPeriod;
-
- if (rateChanged) {
-- timerPeriod = NSEC_PER_SEC / rate;
-+ timerPeriod = NSEC_PER_SEC / rate;
- expires = ktime_set(0, timerPeriod);
- /*
- * Allow the kernel to expire the timer at its convenience.
- * ppoll() uses 0.1% of the timeout value. I think we can
- * tolerate 1%.
- */
--
-+
- slack = timerPeriod / 100;
- }
- set_current_state(TASK_INTERRUPTIBLE);
-@@ -3620,7 +3630,7 @@
-
- printk(KERN_DEBUG "%s: p = 0x%p, offset = 0x%p, numPagesNeeded = %"FMTSZ"u,"
- " handleSize = %"FMTSZ"u, mappedAddr = 0x%p\n",
-- __func__, p, (void *)offset, numPagesNeeded, handleSize, mappedAddr);
-+ __func__, p, (void *)offset, numPagesNeeded, handleSize, mappedAddr);
-
- newHandle->numPages = numPagesNeeded;
- newHandle->addr = mappedAddr;
-@@ -3656,7 +3666,7 @@
- }
-
- printk(KERN_DEBUG "%s: numPages = %"FMTSZ"u, addr = 0x%p\n",
-- __func__, handle->numPages, handle->addr);
-+ __func__, handle->numPages, handle->addr);
-
- if (handle->numPages > 1) {
- vunmap(handle->addr);
-diff --git a/vmmon/linux/vmmonInt.h b/vmmon/linux/vmmonInt.h
-index 4dc04e9..993212d 100644
---- a/vmmon/linux/vmmonInt.h
-+++ b/vmmon/linux/vmmonInt.h
-@@ -28,7 +28,7 @@
- * Hide all kernel compatibility stuff in these macros and functions.
- */
-
--#ifdef VMW_HAVE_SMP_CALL_3ARG
-+#if defined (VMW_HAVE_SMP_CALL_3ARG) || LINUX_VERSION_CODE >= KERNEL_VERSION(3, 0, 0)
- #define compat_smp_call_function(fn, info, wait) smp_call_function(fn, info, wait)
- #else
- #define compat_smp_call_function(fn, info, wait) smp_call_function(fn, info, 1, wait)
diff --git a/vmnet.patch b/vmnet.patch
index 112dbfe1495b..867a75f361e2 100644
--- a/vmnet.patch
+++ b/vmnet.patch
@@ -24,24 +24,9 @@ index 2d8e6f6..a14166b 100644
-EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE)
+EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE) $(LINUXINCLUDE)
- EXTRA_CFLAGS += $(call vm_check_build, $(SRCROOT)/netdev_has_net.c,-DVMW_NETDEV_HAS_NET, )
- EXTRA_CFLAGS += $(call vm_check_build, $(SRCROOT)/netdev_has_dev_net.c,-DVMW_NETDEV_HAS_DEV_NET, )
- EXTRA_CFLAGS += $(call vm_check_build, $(SRCROOT)/nfhook_uses_skb.c,-DVMW_NFHOOK_USES_SKB, )
-diff --git a/vmnet/bridge.c b/vmnet/bridge.c
---- a/vmnet/bridge.c
-+++ b/vmnet/bridge.c
-@@ -636,7 +636,11 @@
- unsigned long flags;
- int i;
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 13, 0)
- atomic_inc(&clone->users);
-+#else
-+ clone = skb_get(clone);
-+#endif
+ obj-m += $(DRIVER).o
- clone->dev = dev;
- clone->protocol = eth_type_trans(clone, dev);
diff --git a/vmnet/driver.c b/vmnet/driver.c
index 7e7ad99..5f508f6 100644
--- a/vmnet/driver.c
@@ -102,463 +87,6 @@ index 7e7ad99..5f508f6 100644
crc = 0xffffffff; /* init CRC for each address */
for (byte = 0; byte < ETH_ALEN; byte++) { /* for each address byte */
-diff --git a/vmnet/userif.c b/vmnet/userif.c
-index 94146f6..5298406 100644
---- a/vmnet/userif.c
-+++ b/vmnet/userif.c
-@@ -116,14 +116,18 @@
- int retval;
-
- down_read(&current->mm->mmap_sem);
--#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0)
-- retval = get_user_pages(addr, 1, FOLL_WRITE, &page, NULL);
--#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)
-- retval = get_user_pages(addr, 1, 1, 0, &page, NULL);
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 99)
-+ retval = get_user_pages(addr,
- #else
- retval = get_user_pages(current, current->mm, addr,
-- 1, 1, 0, &page, NULL);
- #endif
-+ 1,
-+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 0)
-+ 1, 0,
-+#else
-+ FOLL_WRITE,
-+#endif
-+ &page, NULL);
- up_read(&current->mm->mmap_sem);
-
- if (retval != 1) {
-@@ -187,13 +191,13 @@
- *
- * Sets up notification by filling in pollPtr, actPtr, and recvClusterCount
- * fields.
-- *
-- * Results:
-+ *
-+ * Results:
- * 0 on success
- * < 0 on failure: the actual value determines the type of failure
- *
- * Side effects:
-- * Fields pollPtr, actPtr, recvClusterCount, pollPage, actPage, and
-+ * Fields pollPtr, actPtr, recvClusterCount, pollPage, actPage, and
- * recvClusterPage are filled in VNetUserIf structure.
- *
- *-----------------------------------------------------------------------------
-@@ -283,8 +287,8 @@
- * VNetUserIfUnsetupNotify --
- *
- * Destroys permanent mapping for notify structure provided by user.
-- *
-- * Results:
-+ *
-+ * Results:
- * None.
- *
- * Side effects:
-@@ -338,7 +342,7 @@
- *
- * Free the user interface port.
- *
-- * Results:
-+ * Results:
- * None.
- *
- * Side effects:
-@@ -360,7 +364,7 @@
- }
- dev_kfree_skb(skb);
- }
--
-+
- if (userIf->pollPtr) {
- VNetUserIfUnsetupNotify(userIf);
- }
-@@ -384,7 +388,7 @@
- *
- * This jack is receiving a packet. Take appropriate action.
- *
-- * Results:
-+ * Results:
- * None.
- *
- * Side effects:
-@@ -400,12 +404,12 @@
- VNetUserIF *userIf = (VNetUserIF*)this->private;
- uint8 *dest = SKB_2_DESTMAC(skb);
- unsigned long flags;
--
-+
- if (!UP_AND_RUNNING(userIf->port.flags)) {
- userIf->stats.droppedDown++;
- goto drop_packet;
- }
--
-+
- if (!VNetPacketMatch(dest,
- userIf->port.paddr,
- (const uint8 *)userIf->port.exactFilter,
-@@ -415,12 +419,12 @@
- userIf->stats.droppedMismatch++;
- goto drop_packet;
- }
--
-+
- if (skb_queue_len(&userIf->packetQueue) >= vnet_max_qlen) {
- userIf->stats.droppedOverflow++;
- goto drop_packet;
- }
--
-+
- if (skb->len > ETHER_MAX_QUEUED_PACKET) {
- userIf->stats.droppedLargePacket++;
- goto drop_packet;
-@@ -444,7 +448,7 @@
-
- wake_up(&userIf->waitQueue);
- return;
--
-+
- drop_packet:
- dev_kfree_skb(skb);
- }
-@@ -457,7 +461,7 @@
- *
- * Callback for read operation on this userif entry in vnets proc fs.
- *
-- * Results:
-+ * Results:
- * Length of read operation.
- *
- * Side effects:
-@@ -476,21 +480,21 @@
- // read
- void *data) // IN: client data - not used
- {
-- VNetUserIF *userIf = (VNetUserIF*)data;
-+ VNetUserIF *userIf = (VNetUserIF*)data;
- int len = 0;
--
-+
- if (!userIf) {
- return len;
- }
--
-+
- len += VNetPrintPort(&userIf->port, page+len);
--
-+
- len += sprintf(page+len, "read %u written %u queued %u ",
- userIf->stats.read,
- userIf->stats.written,
- userIf->stats.queued);
--
-- len += sprintf(page+len,
-+
-+ len += sprintf(page+len,
- "dropped.down %u dropped.mismatch %u "
- "dropped.overflow %u dropped.largePacket %u",
- userIf->stats.droppedDown,
-@@ -499,7 +503,7 @@
- userIf->stats.droppedLargePacket);
-
- len += sprintf(page+len, "\n");
--
-+
- *start = 0;
- *eof = 1;
- return len;
-@@ -513,7 +517,7 @@
- *
- * Copy part of datagram to userspace.
- *
-- * Results:
-+ * Results:
- * zero on success,
- * -EFAULT if buffer is an invalid area
- *
-@@ -550,12 +554,12 @@
- *
- * Copy part of datagram to userspace doing checksum at same time.
- *
-- * Do not mark this function INLINE, it is recursive! With all gcc's
-+ * Do not mark this function INLINE, it is recursive! With all gcc's
- * released up to now (<= gcc-3.3.1) inlining this function just
- * consumes 120 more bytes of code and goes completely mad on
- * register allocation, storing almost everything in the memory.
- *
-- * Results:
-+ * Results:
- * folded checksum (non-negative value) on success,
- * -EINVAL if offset is too big,
- * -EFAULT if buffer is an invalid area
-@@ -577,7 +581,7 @@
- char *curr = buf;
- const skb_frag_t *frag;
-
-- /*
-+ /*
- * Something bad happened. We skip only up to skb->nh.raw, and skb->nh.raw
- * must be in the header, otherwise we are in the big troubles.
- */
-@@ -634,7 +638,7 @@
- * Copy complete datagram to the user space. Fill correct checksum
- * into the copied datagram if nobody did it yet.
- *
-- * Results:
-+ * Results:
- * On success byte count, on failure -EFAULT.
- *
- * Side effects:
-@@ -663,7 +667,7 @@
- size_t skl;
- int csum;
- u_int16_t csum16;
--
-+
- skl = compat_skb_csum_start(skb);
- if (VNetCopyDatagram(skb, buf, skl)) {
- return -EFAULT;
-@@ -694,7 +698,7 @@
- * The virtual network's read file operation. Reads the next pending
- * packet for this network connection.
- *
-- * Results:
-+ * Results:
- * On success the len of the packet received,
- * else if no packet waiting and nonblocking 0,
- * else -errno.
-@@ -705,7 +709,7 @@
- *----------------------------------------------------------------------
- */
-
--static int
-+static int
- VNetUserIfRead(VNetPort *port, // IN
- struct file *filp, // IN
- char *buf, // OUT
-@@ -773,7 +777,7 @@
- * The virtual network's write file operation. Send the raw packet
- * to the network.
- *
-- * Results:
-+ * Results:
- * On success the count of bytes written else errno.
- *
- * Side effects:
-@@ -782,7 +786,7 @@
- *----------------------------------------------------------------------
- */
-
--static int
-+static int
- VNetUserIfWrite(VNetPort *port, // IN
- struct file *filp, // IN
- const char *buf, // IN
-@@ -794,8 +798,8 @@
- /*
- * Check size
- */
--
-- if (count < sizeof (struct ethhdr) ||
-+
-+ if (count < sizeof (struct ethhdr) ||
- count > ETHER_MAX_QUEUED_PACKET) {
- return -EINVAL;
- }
-@@ -812,25 +816,25 @@
- /*
- * Allocate an sk_buff.
- */
--
-+
- skb = dev_alloc_skb(count + 7);
- if (skb == NULL) {
- // XXX obey O_NONBLOCK?
- return -ENOBUFS;
- }
--
-+
- skb_reserve(skb, 2);
--
-+
- /*
- * Copy the data and send it.
- */
--
-+
- userIf->stats.written++;
- if (copy_from_user(skb_put(skb, count), buf, count)) {
- dev_kfree_skb(skb);
- return -EFAULT;
- }
--
-+
- VNetSend(&userIf->port.jack, skb);
-
- return count;
-@@ -844,7 +848,7 @@
- *
- * XXX
- *
-- * Results:
-+ * Results:
- * 0 on success
- * -errno on failure
- *
-@@ -867,8 +871,8 @@
- return -EINVAL;
- case SIOCSETNOTIFY2:
- #ifdef VMX86_SERVER
-- /*
-- * This ioctl always return failure on ESX since we cannot map pages into
-+ /*
-+ * This ioctl always return failure on ESX since we cannot map pages into
- * the console os that are from the VMKernel address space which was the
- * only case we used this.
- */
-@@ -911,20 +915,20 @@
- break;
-
- case SIOCSIFFLAGS:
-- /*
-- * Drain queue when interface is no longer active. We drain the queue to
-+ /*
-+ * Drain queue when interface is no longer active. We drain the queue to
- * avoid having old packets delivered to the guest when reneabled.
- */
--
-+
- if (!UP_AND_RUNNING(userIf->port.flags)) {
- struct sk_buff *skb;
- unsigned long flags;
- struct sk_buff_head *q = &userIf->packetQueue;
--
-+
- while ((skb = skb_dequeue(q)) != NULL) {
- dev_kfree_skb(skb);
- }
--
-+
- spin_lock_irqsave(&q->lock, flags);
- if (userIf->pollPtr) {
- if (skb_queue_empty(q)) {
-@@ -941,11 +945,11 @@
- case SIOCINJECTLINKSTATE:
- {
- uint8 linkUpFromUser;
-- if (copy_from_user(&linkUpFromUser, (void *)ioarg,
-+ if (copy_from_user(&linkUpFromUser, (void *)ioarg,
- sizeof linkUpFromUser)) {
- return -EFAULT;
- }
--
-+
- if (linkUpFromUser != 0 && linkUpFromUser != 1) {
- return -EINVAL;
- }
-@@ -957,7 +961,7 @@
- return -ENOIOCTLCMD;
- break;
- }
--
-+
- return 0;
- }
-
-@@ -969,7 +973,7 @@
- *
- * The virtual network's file poll operation.
- *
-- * Results:
-+ * Results:
- * Return POLLIN if success, else sleep and return 0.
- * FIXME: Should not we always return POLLOUT?
- *
-@@ -985,7 +989,7 @@
- poll_table *wait) // IN
- {
- VNetUserIF *userIf = (VNetUserIF*)port->jack.private;
--
-+
- poll_wait(filp, &userIf->waitQueue, wait);
- if (!skb_queue_empty(&userIf->packetQueue)) {
- return POLLIN;
-@@ -1000,8 +1004,8 @@
- * VNetUserIfSetUplinkState --
- *
- * Sends link state change event.
-- *
-- * Results:
-+ *
-+ * Results:
- * 0 on success, errno on failure.
- *
- * Side effects:
-@@ -1043,7 +1047,7 @@
- event.header.eventId = 0;
- event.header.classSet = VNET_EVENT_CLASS_UPLINK;
- event.header.type = VNET_EVENT_TYPE_LINK_STATE;
-- /*
-+ /*
- * XXX kind of a hack, vmx will coalesce linkup/down if they come from the
- * same adapter.
- */
-@@ -1068,8 +1072,8 @@
- *
- * Create a user level port to the wonderful world of virtual
- * networking.
-- *
-- * Results:
-+ *
-+ * Results:
- * Errno. Also returns an allocated port to connect to,
- * NULL on error.
- *
-@@ -1085,7 +1089,7 @@
- VNetUserIF *userIf;
- static unsigned id = 0;
- int retval;
--
-+
- userIf = kmalloc(sizeof *userIf, GFP_USER);
- if (!userIf) {
- return -ENOMEM;
-@@ -1094,7 +1098,7 @@
- /*
- * Initialize fields.
- */
--
-+
- userIf->port.id = id++;
-
- userIf->port.jack.peer = NULL;
-@@ -1139,7 +1143,7 @@
- /*
- * Rest of fields.
- */
--
-+
- userIf->port.flags = IFF_RUNNING;
-
- memset(userIf->port.paddr, 0, sizeof userIf->port.paddr);
-@@ -1152,12 +1156,12 @@
- userIf->port.fileOpWrite = VNetUserIfWrite;
- userIf->port.fileOpIoctl = VNetUserIfIoctl;
- userIf->port.fileOpPoll = VNetUserIfPoll;
--
-+
- skb_queue_head_init(&(userIf->packetQueue));
- init_waitqueue_head(&userIf->waitQueue);
-
- memset(&userIf->stats, 0, sizeof userIf->stats);
--
-+
- *ret = &userIf->port;
- return 0;
- }
diff --git a/vmnet/vm_device_version.h b/vmnet/vm_device_version.h
index e2cb477..3dd7097 100644
--- a/vmnet/vm_device_version.h
@@ -577,15 +105,12 @@ diff --git a/vmnet/vmnetInt.h b/vmnet/vmnetInt.h
index 0ee52ec..4e3b923 100644
--- a/vmnet/vmnetInt.h
+++ b/vmnet/vmnetInt.h
-@@ -77,9 +77,9 @@
-
-
+@@ -48,7 +48,7 @@
extern struct proto vmnet_proto;
--#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 99)
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) || defined(sk_net_refcnt)
# define compat_sk_alloc(_bri, _pri) sk_alloc(&init_net, \
- PF_NETLINK, _pri, &vmnet_proto, 1)
+ PF_NETLINK, _pri, &vmnet_proto, 0)
- #elif defined(VMW_NETDEV_HAS_NET)
+ #else
# define compat_sk_alloc(_bri, _pri) sk_alloc(&init_net, \
PF_NETLINK, _pri, &vmnet_proto)
diff --git a/vsock.patch b/vsock.patch
index e6e341c58a34..4161edbd11d9 100644
--- a/vsock.patch
+++ b/vsock.patch
@@ -42,7 +42,7 @@ index bde1497..9f8f843 100644
#include "compat_cred.h"
#include "compat_module.h"
-@@ -212,7 +215,11 @@
+@@ -213,7 +216,11 @@
struct sockaddr *addr, int addrLen, int flags);
static int VSockVmciStreamConnect(struct socket *sock,
struct sockaddr *addr, int addrLen, int flags);
@@ -54,7 +54,7 @@ index bde1497..9f8f843 100644
static int VSockVmciGetname(struct socket *sock,
struct sockaddr *addr, int *addrLen, int peer);
static unsigned int VSockVmciPoll(struct file *file,
-@@ -232,13 +232,29 @@ static int VSockVmciStreamSetsockopt(struct socket *sock, int level, int optname
+@@ -233,13 +240,29 @@ static int VSockVmciStreamSetsockopt(struct socket *sock, int level, int optname
static int VSockVmciStreamGetsockopt(struct socket *sock, int level, int optname,
char __user *optval, int __user * optlen);
@@ -84,7 +84,7 @@ index bde1497..9f8f843 100644
struct msghdr *msg, size_t len, int flags);
static int VSockVmciCreate(
-@@ -2822,11 +2838,18 @@ __VSockVmciCreate(struct net *net, // IN: Network namespace
+@@ -2872,11 +2895,18 @@ __VSockVmciCreate(struct net *net, // IN: Network namespace
* From 2.6.9 to until 2.6.12 sk_alloc() used a cache in
* the protocol structure, but you still had to specify the size and cache
* yourself.
@@ -105,7 +105,7 @@ index bde1497..9f8f843 100644
sk = sk_alloc(vsockVmciFamilyOps.family, priority,
vsockVmciProto.slab_obj_size, vsockVmciProto.slab);
#elif LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 24)
-@@ -3775,7 +3805,12 @@
+@@ -3825,7 +3855,12 @@
static int
VSockVmciAccept(struct socket *sock, // IN
struct socket *newsock, // IN/OUT
@@ -118,7 +118,7 @@ index bde1497..9f8f843 100644
{
struct sock *listener;
int err;
-@@ -4210,7 +4233,11 @@ VSockVmciShutdown(struct socket *sock, // IN
+@@ -4260,7 +4295,11 @@ VSockVmciShutdown(struct socket *sock, // IN
*/
static int
@@ -130,7 +130,7 @@ index bde1497..9f8f843 100644
struct socket *sock, // IN: socket to send on
struct msghdr *msg, // IN: message to send
size_t len) // IN: length of message
-@@ -4302,7 +4329,11 @@ VSockVmciDgramSendmsg(struct kiocb *kiocb, // UNUSED
+@@ -4352,7 +4391,11 @@ VSockVmciDgramSendmsg(struct kiocb *kiocb, // UNUSED
goto out;
}
@@ -142,7 +142,7 @@ index bde1497..9f8f843 100644
dg->dst = VMCI_MAKE_HANDLE(remoteAddr->svm_cid, remoteAddr->svm_port);
dg->src = VMCI_MAKE_HANDLE(vsk->localAddr.svm_cid, vsk->localAddr.svm_port);
-@@ -4540,7 +4571,11 @@ VSockVmciStreamGetsockopt(struct socket *sock, // IN
+@@ -4590,7 +4633,11 @@ VSockVmciStreamGetsockopt(struct socket *sock, // IN
*/
static int
@@ -154,7 +154,7 @@ index bde1497..9f8f843 100644
struct socket *sock, // IN: socket to send on
struct msghdr *msg, // IN: message to send
size_t len) // IN: length of message
-@@ -4662,7 +4697,11 @@ VSockVmciStreamSendmsg(struct kiocb *kiocb, // UNUSED
+@@ -4712,7 +4759,11 @@ VSockVmciStreamSendmsg(struct kiocb *kiocb, // UNUSED
* able to send.
*/
@@ -166,7 +166,7 @@ index bde1497..9f8f843 100644
len - totalWritten, 0);
if (written < 0) {
err = -ENOMEM;
-@@ -4709,7 +4748,11 @@ out:
+@@ -4759,7 +4810,11 @@ out:
*/
static int
@@ -178,7 +178,7 @@ index bde1497..9f8f843 100644
struct socket *sock, // IN: socket to receive from
struct msghdr *msg, // IN/OUT: message to receive into
size_t len, // IN: length of receive buffer
-@@ -4759,7 +4802,11 @@ VSockVmciDgramRecvmsg(struct kiocb *kiocb, // UNUSED
+@@ -4809,7 +4864,11 @@ VSockVmciDgramRecvmsg(struct kiocb *kiocb, // UNUSED
}
/* Place the datagram payload in the user's iovec. */
@@ -190,7 +190,7 @@ index bde1497..9f8f843 100644
if (err) {
goto out;
}
-@@ -4800,7 +4847,11 @@ out:
+@@ -4850,7 +4909,11 @@ out:
*/
static int
@@ -202,7 +202,7 @@ index bde1497..9f8f843 100644
struct socket *sock, // IN: socket to receive from
struct msghdr *msg, // IN/OUT: message to receive into
size_t len, // IN: length of receive buffer
-@@ -4905,9 +4956,17 @@ VSockVmciStreamRecvmsg(struct kiocb *kiocb, // UNUSED
+@@ -4955,9 +5018,17 @@ VSockVmciStreamRecvmsg(struct kiocb *kiocb, // UNUSED
}
if (flags & MSG_PEEK) {