diff options
-rw-r--r-- | .SRCINFO | 43 | ||||
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | PKGBUILD | 88 | ||||
-rw-r--r-- | config | 12 | ||||
-rw-r--r-- | config.xml | 43 | ||||
-rw-r--r-- | dkms.conf.in | 19 | ||||
-rw-r--r-- | environments.xml | 8 | ||||
-rwxr-xr-x[-rw-r--r--] | unlocker.py | 21 | ||||
-rw-r--r-- | vmci.patch | 10 | ||||
-rw-r--r-- | vmmon.patch | 657 | ||||
-rw-r--r-- | vmnet.patch | 483 | ||||
-rw-r--r-- | vsock.patch | 24 |
12 files changed, 145 insertions, 1265 deletions
@@ -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 @@ -1,9 +1,9 @@ #!/usr/bin/make -f MODULES = \ - vmblock \ vmmon \ vmnet \ + #vmblock \ #vmci \ #vsock @@ -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/" } @@ -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(¤t->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(¤t->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(¤t->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(¤t->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) { |