Page 1 of 1

[PATCH] recent kernel 4.4 upgrade broke vmware workstation

PostPosted: Jun 16th, '16, 23:33
by jiml8
The recent upgrade to Kernel 4.4 broke vmware workstation 11 rather badly. In fact, I regret doing the update now because I really did not have the time to fix it.

However, needs must, and I did patch vmware workstation 11 to run with this latest kernel although it took a few hours. When I get around to it, I will probably construct and post a patch file so that others can do this also.

Until that time, contact me directly if you upgrade and your workstation installation won't compile correctly, and I can send you the patched kernel module files (the tar files found in /lib/vmware/modules/source). Patches will also work with vmware player.

I was quite surprised when I went looking and could not find a built and working patchfile already available someplace. I found bits and pieces, but part of it I had to sort out for myself. Very strange.

Re: recent upgrade and vmware workstation

PostPosted: Jun 17th, '16, 01:49
by jiml8
here is the patchfile to patch vmware workstation 11.1 to work with Linux kernel 4.4.

Code: Select all
diff -rupN orig/vmci-only/linux/driver.c new/vmci-only/linux/driver.c
--- orig/vmci-only/linux/driver.c       2014-11-20 17:29:15.000000000 -0700
+++ new/vmci-only/linux/driver.c        2016-06-16 13:41:59.000000000 -0700
@@ -27,6 +27,9 @@
 #include <linux/file.h>
 #include <linux/fs.h>
 #include <linux/init.h>
+#include <linux/vmalloc.h>
+#include <linux/uio.h>
+
 #if defined(__x86_64__) && LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 12)
 #   include <linux/ioctl32.h>
 /* Use weak: not all kernels export sys_ioctl for use by modules */
@@ -2466,7 +2469,6 @@ vmci_init(void)
 static void __exit
 vmci_exit(void)
 {
-   int retval;
 
    if (guestDeviceInit) {
       pci_unregister_driver(&vmci_driver);
@@ -2479,12 +2481,7 @@ vmci_exit(void)
 
       VMCI_HostCleanup();
 
-      retval = misc_deregister(&linuxState.misc);
-      if (retval) {
-         Warning(LGPFX "Module %s: error unregistering\n", VMCI_MODULE_NAME);
-      } else {
-         Log(LGPFX"Module %s: unloaded\n", VMCI_MODULE_NAME);
-      }
+      misc_deregister(&linuxState.misc);
 
       hostDeviceInit = FALSE;
    }
diff -rupN orig/vmci-only/linux/vmciKernelIf.c new/vmci-only/linux/vmciKernelIf.c
--- orig/vmci-only/linux/vmciKernelIf.c 2014-11-20 17:29:15.000000000 -0700
+++ new/vmci-only/linux/vmciKernelIf.c  2016-06-16 14:22:13.000000000 -0700
@@ -40,6 +40,7 @@
 #include <linux/socket.h>       /* For memcpy_{to,from}iovec(). */
 #include <linux/vmalloc.h>
 #include <linux/wait.h>
+#include <linux/skbuff.h>
 
 #include "compat_highmem.h"
 #include "compat_interrupt.h"
@@ -1198,11 +1199,13 @@ __VMCIMemcpyToQueue(VMCIQueue *queue,
       }
 
       if (isIovec) {
-         struct iovec *iov = (struct iovec *)src;
+       //struct iovec *iov = (struct iovec *)src;
+       struct msghdr *msg = src;
          int err;
 
          /* The iovec will track bytesCopied internally. */
-         err = memcpy_fromiovec((uint8 *)va + pageOffset, iov, toCopy);
+         //err = memcpy_fromiovec((uint8 *)va + pageOffset, iov, toCopy);
+        err = memcpy_from_msg((uint8 *)va + pageOffset, msg, toCopy);
          if (err != 0) {
             if (kernelIf->host) {
                kunmap(kernelIf->u.h.page[pageIndex]);
@@ -1273,11 +1276,13 @@ __VMCIMemcpyFromQueue(void *dest,
       }
 
       if (isIovec) {
-         struct iovec *iov = (struct iovec *)dest;
+       //struct iovec *iov = (struct iovec *)dest;
+        struct msghdr *msg = dest;
          int err;
 
          /* The iovec will track bytesCopied internally. */
-         err = memcpy_toiovec(iov, (uint8 *)va + pageOffset, toCopy);
+         //err = memcpy_toiovec(iov, (uint8 *)va + pageOffset, toCopy);
+        err = memcpy_to_msg((uint8 *)va + pageOffset, msg, toCopy);
          if (err != 0) {
             if (kernelIf->host) {
                kunmap(kernelIf->u.h.page[pageIndex]);
diff -rupN orig/vmmon-only/linux/driver.c new/vmmon-only/linux/driver.c
--- orig/vmmon-only/linux/driver.c      2014-11-20 18:13:55.000000000 -0700
+++ new/vmmon-only/linux/driver.c       2016-06-16 13:23:34.000000000 -0700
@@ -400,9 +400,7 @@ cleanup_module(void)
 #ifdef VMX86_DEVEL
    unregister_chrdev(linuxState.major, linuxState.deviceName);
 #else
-   if (misc_deregister(&linuxState.misc)) {
-      Warning("Module %s: error unregistering\n", linuxState.deviceName);
-   }
+   misc_deregister(&linuxState.misc);
 #endif
 
    Log("Module %s: unloaded\n", linuxState.deviceName);
diff -rupN orig/vmnet-only/driver.c new/vmnet-only/driver.c
--- orig/vmnet-only/driver.c    2014-11-20 18:13:56.000000000 -0700
+++ new/vmnet-only/driver.c     2015-08-03 16:28:44.000000000 -0700
@@ -1191,8 +1191,8 @@ VNetFileOpUnlockedIoctl(struct file    *
    struct inode *inode = NULL;
    long err;
 
-   if (filp && filp->f_dentry) {
-      inode = filp->f_dentry->d_inode;
+   if (filp && filp->f_path.dentry) {
+      inode = filp->f_path.dentry->d_inode;
    }
    err = VNetFileOpIoctl(inode, filp, iocmd, ioarg);
    return err;
diff -rupN orig/vmnet-only/userif.c new/vmnet-only/userif.c
--- orig/vmnet-only/userif.c    2014-11-20 18:13:56.000000000 -0700
+++ new/vmnet-only/userif.c     2015-08-03 16:32:14.000000000 -0700
@@ -523,7 +523,9 @@ VNetCopyDatagram(const struct sk_buff *s
       .iov_base = buf,
       .iov_len  = len,
    };
-   return skb_copy_datagram_iovec(skb, 0, &iov, len);
+   struct iov_iter to;
+   iov_iter_init(&to, READ, &iov, 1, len);
+   return skb_copy_datagram_iter(skb, 0, &to, len);
 }
 
 
diff -rupN orig/vmnet-only/vmnetInt.h new/vmnet-only/vmnetInt.h
--- orig/vmnet-only/vmnetInt.h  2014-11-20 18:13:55.000000000 -0700
+++ new/vmnet-only/vmnetInt.h   2016-06-16 13:29:37.000000000 -0700
@@ -78,8 +78,13 @@
 
 extern struct proto vmnet_proto;
 #ifdef VMW_NETDEV_HAS_NET
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 00)
 #   define compat_sk_alloc(_bri, _pri) sk_alloc(&init_net, \
-                                                PF_NETLINK, _pri, &vmnet_proto)
+                                                 PF_NETLINK, _pri, &vmnet_proto, 1)
+#else
+#   define compat_sk_alloc(_bri, _pri) sk_alloc(&init_net, \
+                                                 PF_NETLINK, _pri, &vmnet_proto)
+#endif
 #else
 #   define compat_sk_alloc(_bri, _pri) sk_alloc(PF_NETLINK, _pri, &vmnet_proto, 1)
 #endif



Re: [PATCH] recent kernel 4.4 upgrade broke vmware workstati

PostPosted: Jun 17th, '16, 16:14
by doktor5000
Thanks for sharing, I adjusted the title slightly.

Re: [PATCH] recent kernel 4.4 upgrade broke vmware workstati

PostPosted: Jun 17th, '16, 18:54
by jiml8
I also posted the patchfile on github.

https://github.com/jiml8/vmware-worksta ... -4.4.patch

Re: [PATCH] recent kernel 4.4 upgrade broke vmware workstati

PostPosted: Jul 6th, '16, 14:41
by magfan
@jiml8: How can I apply your patch file? To which directory do I have to go?
Just calling
Code: Select all
patch -p3 < ./Downloads/vmware-workstation-11.0-linux-kernel-4.4.patch-master/workstation11-kern4.4.patch
did not work.

Re: [PATCH] recent kernel 4.4 upgrade broke vmware workstati

PostPosted: Jul 6th, '16, 18:28
by doktor5000
In the directory where the file that should be patched (vmci-only/linux/driver.c) is located, run it with
-p1 so patch will strip away the first bit of the path in the patch ( new/vmci-only/linux/driver.c) , so e.g.

Code: Select all
patch -p1 < /home/magfan/Downloads/vmware-workstation-11.0-linux-kernel-4.4.patch-master/workstation11-kern4.4.patch

Re: [PATCH] recent kernel 4.4 upgrade broke vmware workstati

PostPosted: Jul 6th, '16, 19:02
by jiml8
Go to the directory where the vmware files are kept. In Mageia, that is /lib/vmware/modules/source. Untar the tar files you find there, specifically vmci.tar, vmmon.tar, and vmnet.tar. Then run the patch and it should find the files to patch. After doing that, tar the directories vmmon-only, vmnet-only, and vmci-only to replace the tar files that are currently there. Then vmware workstation will compile.

Re: [PATCH] recent kernel 4.4 upgrade broke vmware workstati

PostPosted: Jul 7th, '16, 08:53
by magfan
Well, there is still something missing:
Code: Select all
# patch -p1 < /home/magfan/Downloads/vmware-workstation-11.0-linux-kernel-4.4.patch-master/workstation11-kern4.4.patch
patching file vmci-only/linux/driver.c
patching file vmci-only/linux/vmciKernelIf.c
patching file vmmon-only/linux/driver.c
patching file vmnet-only/driver.c
Hunk #1 FAILED at 1191.
1 out of 1 hunk FAILED -- saving rejects to file vmnet-only/driver.c.rej
patching file vmnet-only/userif.c
Hunk #1 FAILED at 523.
1 out of 1 hunk FAILED -- saving rejects to file vmnet-only/userif.c.rej
patching file vmnet-only/vmnetInt.h
# cat vmnet-only/driver.c.rej
--- vmnet-only/driver.c 2014-11-20 18:13:56.000000000 -0700
+++ vmnet-only/driver.c 2015-08-03 16:28:44.000000000 -0700
@@ -1191,8 +1191,8 @@ VNetFileOpUnlockedIoctl(struct file    *
    struct inode *inode = NULL;
    long err;
 
-   if (filp && filp->f_dentry) {
-      inode = filp->f_dentry->d_inode;
+   if (filp && filp->f_path.dentry) {
+      inode = filp->f_path.dentry->d_inode;
    }
    err = VNetFileOpIoctl(inode, filp, iocmd, ioarg);
    return err;
# cat vmnet-only/userif.c.rej
--- vmnet-only/userif.c 2014-11-20 18:13:56.000000000 -0700
+++ vmnet-only/userif.c 2015-08-03 16:32:14.000000000 -0700
@@ -523,7 +523,9 @@ VNetCopyDatagram(const struct sk_buff *s
       .iov_base = buf,
       .iov_len  = len,
    };
-   return skb_copy_datagram_iovec(skb, 0, &iov, len);
+   struct iov_iter to;
+   iov_iter_init(&to, READ, &iov, 1, len);
+   return skb_copy_datagram_iter(skb, 0, &to, len);
 }
 

# vmware-modconfig --console --install-all
Stopping vmware (via systemctl):                                                                              [  OK  ]
make: Entering directory '/tmp/modconfig-rXMHTk/vmmon-only'
Using kernel build system.
/usr/bin/make -C /lib/modules/4.4.13-server-1.mga5/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
  MODULEBUILDDIR= modules
make[1]: Entering directory '/usr/src/kernel-4.4.13-server-1.mga5'
  CC [M]  /tmp/modconfig-rXMHTk/vmmon-only/linux/driver.o
  CC [M]  /tmp/modconfig-rXMHTk/vmmon-only/linux/hostif.o
  CC [M]  /tmp/modconfig-rXMHTk/vmmon-only/linux/driverLog.o
  CC [M]  /tmp/modconfig-rXMHTk/vmmon-only/common/memtrack.o
  CC [M]  /tmp/modconfig-rXMHTk/vmmon-only/common/apic.o
  CC [M]  /tmp/modconfig-rXMHTk/vmmon-only/common/hashFunc.o
  CC [M]  /tmp/modconfig-rXMHTk/vmmon-only/common/vmx86.o
  CC [M]  /tmp/modconfig-rXMHTk/vmmon-only/common/cpuid.o
  CC [M]  /tmp/modconfig-rXMHTk/vmmon-only/common/task.o
  CC [M]  /tmp/modconfig-rXMHTk/vmmon-only/common/phystrack.o
  CC [M]  /tmp/modconfig-rXMHTk/vmmon-only/vmcore/moduleloop.o
  CC [M]  /tmp/modconfig-rXMHTk/vmmon-only/common/comport.o
/tmp/modconfig-rXMHTk/vmmon-only/linux/driver.c: In Funktion »cleanup_module«:
/tmp/modconfig-rXMHTk/vmmon-only/linux/driver.c:403:8: Fehler: void-Wert nicht ignoriert wie es sein sollte
    if (misc_deregister(&linuxState.misc)) {
        ^
Auf höchster Ebene:
/tmp/modconfig-rXMHTk/vmmon-only/linux/driver.c:1332:1: Warnung: always_inline könnte nicht als inline erzeugt werden [-Wattributes]
 LinuxDriverSyncReadTSCs(uint64 *delta) // OUT: TSC max - TSC min
 ^
scripts/Makefile.build:258: recipe for target '/tmp/modconfig-rXMHTk/vmmon-only/linux/driver.o' failed
make[2]: *** [/tmp/modconfig-rXMHTk/vmmon-only/linux/driver.o] Error 1
make[2]: *** Warte auf noch nicht beendete Prozesse...
Makefile:1378: recipe for target '_module_/tmp/modconfig-rXMHTk/vmmon-only' failed
make[1]: *** [_module_/tmp/modconfig-rXMHTk/vmmon-only] Error 2
make[1]: Leaving directory '/usr/src/kernel-4.4.13-server-1.mga5'
Makefile:120: recipe for target 'vmmon.ko' failed
make: *** [vmmon.ko] Error 2
make: Leaving directory '/tmp/modconfig-rXMHTk/vmmon-only'
make: Entering directory '/tmp/modconfig-rXMHTk/vmnet-only'
Using kernel build system.
/usr/bin/make -C /lib/modules/4.4.13-server-1.mga5/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
  MODULEBUILDDIR= modules
make[1]: Entering directory '/usr/src/kernel-4.4.13-server-1.mga5'
  CC [M]  /tmp/modconfig-rXMHTk/vmnet-only/driver.o
  CC [M]  /tmp/modconfig-rXMHTk/vmnet-only/hub.o
  CC [M]  /tmp/modconfig-rXMHTk/vmnet-only/userif.o
  CC [M]  /tmp/modconfig-rXMHTk/vmnet-only/netif.o
  CC [M]  /tmp/modconfig-rXMHTk/vmnet-only/bridge.o
  CC [M]  /tmp/modconfig-rXMHTk/vmnet-only/smac_compat.o
  CC [M]  /tmp/modconfig-rXMHTk/vmnet-only/procfs.o
  CC [M]  /tmp/modconfig-rXMHTk/vmnet-only/smac.o
  CC [M]  /tmp/modconfig-rXMHTk/vmnet-only/vnetUserListener.o
  CC [M]  /tmp/modconfig-rXMHTk/vmnet-only/vnetEvent.o
In file included from include/linux/pci.h:35:0,
                 from /tmp/modconfig-rXMHTk/vmnet-only/compat_netdevice.h:27,
                 from /tmp/modconfig-rXMHTk/vmnet-only/netif.c:43:
include/linux/pci_ids.h:2252:0: Warnung: »PCI_VENDOR_ID_VMWARE« redefiniert
 #define PCI_VENDOR_ID_VMWARE  0x15ad
 ^
In file included from /tmp/modconfig-rXMHTk/vmnet-only/net.h:38:0,
                 from /tmp/modconfig-rXMHTk/vmnet-only/vnetInt.h:26,
                 from /tmp/modconfig-rXMHTk/vmnet-only/netif.c:42:
/tmp/modconfig-rXMHTk/vmnet-only/vm_device_version.h:56:0: Anmerkung: dies ist die Stelle der vorherigen Definition
 #define PCI_VENDOR_ID_VMWARE                    0x15AD
 ^
In file included from /tmp/modconfig-rXMHTk/vmnet-only/net.h:38:0,
                 from /tmp/modconfig-rXMHTk/vmnet-only/vnetInt.h:26,
                 from /tmp/modconfig-rXMHTk/vmnet-only/bridge.c:52:
/tmp/modconfig-rXMHTk/vmnet-only/vm_device_version.h:56:0: Warnung: »PCI_VENDOR_ID_VMWARE« redefiniert
 #define PCI_VENDOR_ID_VMWARE                    0x15AD
 ^
In file included from include/linux/pci.h:35:0,
                 from /tmp/modconfig-rXMHTk/vmnet-only/compat_netdevice.h:27,
                 from /tmp/modconfig-rXMHTk/vmnet-only/bridge.c:51:
include/linux/pci_ids.h:2252:0: Anmerkung: dies ist die Stelle der vorherigen Definition
 #define PCI_VENDOR_ID_VMWARE  0x15ad
 ^
In file included from /tmp/modconfig-rXMHTk/vmnet-only/bridge.c:50:0:
/tmp/modconfig-rXMHTk/vmnet-only/bridge.c: In Funktion »VNetBridgeUp«:
/tmp/modconfig-rXMHTk/vmnet-only/vmnetInt.h:81:40: Fehler: Zu wenige Argumente für Funktion »sk_alloc«
 #   define compat_sk_alloc(_bri, _pri) sk_alloc(&init_net, \
                                        ^
/tmp/modconfig-rXMHTk/vmnet-only/bridge.c:952:17: Anmerkung: bei Substitution des Makros »compat_sk_alloc«
    bridge->sk = compat_sk_alloc(bridge, GFP_ATOMIC);
                 ^
In file included from /tmp/modconfig-rXMHTk/vmnet-only/compat_sock.h:23:0,
                 from /tmp/modconfig-rXMHTk/vmnet-only/bridge.c:35:
include/net/sock.h:1511:14: Anmerkung: hier deklariert
 struct sock *sk_alloc(struct net *net, int family, gfp_t priority,
              ^
scripts/Makefile.build:258: recipe for target '/tmp/modconfig-rXMHTk/vmnet-only/bridge.o' failed
make[2]: *** [/tmp/modconfig-rXMHTk/vmnet-only/bridge.o] Error 1
make[2]: *** Warte auf noch nicht beendete Prozesse...
Makefile:1378: recipe for target '_module_/tmp/modconfig-rXMHTk/vmnet-only' failed
make[1]: *** [_module_/tmp/modconfig-rXMHTk/vmnet-only] Error 2
make[1]: Leaving directory '/usr/src/kernel-4.4.13-server-1.mga5'
Makefile:120: recipe for target 'vmnet.ko' failed
make: *** [vmnet.ko] Error 2
make: Leaving directory '/tmp/modconfig-rXMHTk/vmnet-only'
Unable to install all modules.  See log for details.

#


I am using vmware-workstation 11.1.2.2780323.

Re: [PATCH] recent kernel 4.4 upgrade broke vmware workstati

PostPosted: Jul 7th, '16, 18:42
by jiml8
The version of Workstation I have here is 11.0.0. I have not updated for technical reasons, and any comments I might have made about 11.1 are in error.

Also, I do not read German. However, I was able to sort out at least some of what is causing you trouble.

The patch to vmmon is in the patch file, but for some reason your vmmon-only/linux/driver.c file did not get patched.

Edit that file, and around line 403 change this code:
Code: Select all
if (misc_deregister(&linuxState.misc)) {
      Warning("Module %s: error unregistering\n", linuxState.deviceName);
   }

to this:
Code: Select all
misc_deregister(&linuxState.misc);

and your module will compile.

In vmnet, you had a similar problem; the patch code is in the patch file, but somehow did not take on your system.

In the file vmnet-only/vmnetInt.h find these lines:
Code: Select all
#ifdef VMW_NETDEV_HAS_NET
#   define compat_sk_alloc(_bri, _pri) sk_alloc(&init_net, \
                                                PF_NETLINK, _pri, &vmnet_proto)
#else
#   define compat_sk_alloc(_bri, _pri) sk_alloc(PF_NETLINK, _pri, &vmnet_proto, 1)
#endif


and replace them with these lines:
Code: Select all
#ifdef VMW_NETDEV_HAS_NET
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 00)
#   define compat_sk_alloc(_bri, _pri) sk_alloc(&init_net, \
                    PF_NETLINK, _pri, &vmnet_proto, 1)
#else
#   define compat_sk_alloc(_bri, _pri) sk_alloc(&init_net, \
                    PF_NETLINK, _pri, &vmnet_proto)
#endif
#else
#   define compat_sk_alloc(_bri, _pri) sk_alloc(PF_NETLINK, _pri, &vmnet_proto, 1)
#endif


Then everything should compile.

Re: [PATCH] recent kernel 4.4 upgrade broke vmware workstati

PostPosted: Jul 8th, '16, 15:08
by magfan
This time I tried to apply the patch again with the option "--merge" and I got the following output:
Code: Select all
patching file vmci-only/linux/driver.c
patching file vmci-only/linux/vmciKernelIf.c
patching file vmmon-only/linux/driver.c
patching file vmnet-only/driver.c
Hunk #1 NOT MERGED at 1314-1320.
patching file vmnet-only/userif.c
Hunk #1 NOT MERGED at 526-536.
patching file vmnet-only/vmnetInt.h


The two places look like this (vmnet-only/driver.c):
Code: Select all
<<<<<<<
   if (jack2->numPorts) {
      VNetPortsChanged(jack1);
=======
   if (filp && filp->f_path.dentry) {
      inode = filp->f_path.dentry->d_inode;
>>>>>>>


and (vmnet-only/userif.c):
Code: Select all
<<<<<<<
#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0)
   return skb_copy_datagram_iovec(skb, 0, &iov, len);
=======
   struct iov_iter to;
   iov_iter_init(&to, READ, &iov, 1, len);
   return skb_copy_datagram_iter(skb, 0, &to, len);
}


>>>>>>>


Du you have any idea about what I could do?

Re: [PATCH] recent kernel 4.4 upgrade broke vmware workstati

PostPosted: Jul 9th, '16, 03:52
by jiml8
Does it compile? If so, don't worry about it. Probably would mean that this particular portion of the patch was already patched in your code.

Re: [PATCH] recent kernel 4.4 upgrade broke vmware workstati

PostPosted: Jul 11th, '16, 08:33
by magfan
No, it does not compile:
Code: Select all
# vmware-modconfig --console --install-all
Stopping vmware (via systemctl):                                          [  OK  ]
make: Entering directory '/tmp/modconfig-paeKFD/vmmon-only'
Using kernel build system.
/usr/bin/make -C /lib/modules/4.4.13-server-1.mga5/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
  MODULEBUILDDIR= modules
make[1]: Entering directory '/usr/src/kernel-4.4.13-server-1.mga5'
  CC [M]  /tmp/modconfig-paeKFD/vmmon-only/linux/driver.o
  CC [M]  /tmp/modconfig-paeKFD/vmmon-only/linux/hostif.o
  CC [M]  /tmp/modconfig-paeKFD/vmmon-only/linux/driverLog.o
  CC [M]  /tmp/modconfig-paeKFD/vmmon-only/common/memtrack.o
  CC [M]  /tmp/modconfig-paeKFD/vmmon-only/common/apic.o
  CC [M]  /tmp/modconfig-paeKFD/vmmon-only/common/hashFunc.o
  CC [M]  /tmp/modconfig-paeKFD/vmmon-only/common/vmx86.o
  CC [M]  /tmp/modconfig-paeKFD/vmmon-only/common/task.o
  CC [M]  /tmp/modconfig-paeKFD/vmmon-only/common/cpuid.o
  CC [M]  /tmp/modconfig-paeKFD/vmmon-only/common/comport.o
  CC [M]  /tmp/modconfig-paeKFD/vmmon-only/common/phystrack.o
  CC [M]  /tmp/modconfig-paeKFD/vmmon-only/vmcore/moduleloop.o
/tmp/modconfig-paeKFD/vmmon-only/linux/driver.c: In Funktion »cleanup_module«:
/tmp/modconfig-paeKFD/vmmon-only/linux/driver.c:403:8: Fehler: void-Wert nicht ignoriert wie es sein sollte
    if (misc_deregister(&linuxState.misc)) {
        ^
Auf höchster Ebene:
/tmp/modconfig-paeKFD/vmmon-only/linux/driver.c:1332:1: Warnung: always_inline könnte nicht als inline erzeugt werden [-Wattributes]
 LinuxDriverSyncReadTSCs(uint64 *delta) // OUT: TSC max - TSC min
 ^                                                                                       
scripts/Makefile.build:258: recipe for target '/tmp/modconfig-paeKFD/vmmon-only/linux/driver.o' failed
make[2]: *** [/tmp/modconfig-paeKFD/vmmon-only/linux/driver.o] Error 1
make[2]: *** Warte auf noch nicht beendete Prozesse...
Makefile:1378: recipe for target '_module_/tmp/modconfig-paeKFD/vmmon-only' failed
make[1]: *** [_module_/tmp/modconfig-paeKFD/vmmon-only] Error 2
make[1]: Leaving directory '/usr/src/kernel-4.4.13-server-1.mga5'
Makefile:120: recipe for target 'vmmon.ko' failed
make: *** [vmmon.ko] Error 2
make: Leaving directory '/tmp/modconfig-paeKFD/vmmon-only'
make: Entering directory '/tmp/modconfig-paeKFD/vmnet-only'
Using kernel build system.
/usr/bin/make -C /lib/modules/4.4.13-server-1.mga5/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \
  MODULEBUILDDIR= modules
make[1]: Entering directory '/usr/src/kernel-4.4.13-server-1.mga5'
  CC [M]  /tmp/modconfig-paeKFD/vmnet-only/driver.o
  CC [M]  /tmp/modconfig-paeKFD/vmnet-only/hub.o
  CC [M]  /tmp/modconfig-paeKFD/vmnet-only/userif.o
  CC [M]  /tmp/modconfig-paeKFD/vmnet-only/netif.o
  CC [M]  /tmp/modconfig-paeKFD/vmnet-only/bridge.o
  CC [M]  /tmp/modconfig-paeKFD/vmnet-only/procfs.o
  CC [M]  /tmp/modconfig-paeKFD/vmnet-only/smac_compat.o
  CC [M]  /tmp/modconfig-paeKFD/vmnet-only/smac.o
  CC [M]  /tmp/modconfig-paeKFD/vmnet-only/vnetEvent.o
  CC [M]  /tmp/modconfig-paeKFD/vmnet-only/vnetUserListener.o
In file included from include/linux/pci.h:35:0,
                 from /tmp/modconfig-paeKFD/vmnet-only/compat_netdevice.h:27,
                 from /tmp/modconfig-paeKFD/vmnet-only/netif.c:43:
include/linux/pci_ids.h:2252:0: Warnung: »PCI_VENDOR_ID_VMWARE« redefiniert
 #define PCI_VENDOR_ID_VMWARE  0x15ad
 ^
In file included from /tmp/modconfig-paeKFD/vmnet-only/net.h:38:0,
                 from /tmp/modconfig-paeKFD/vmnet-only/vnetInt.h:26,
                 from /tmp/modconfig-paeKFD/vmnet-only/netif.c:42:
/tmp/modconfig-paeKFD/vmnet-only/vm_device_version.h:56:0: Anmerkung: dies ist die Stelle der vorherigen Definition
 #define PCI_VENDOR_ID_VMWARE                    0x15AD
 ^
In file included from /tmp/modconfig-paeKFD/vmnet-only/net.h:38:0,
                 from /tmp/modconfig-paeKFD/vmnet-only/vnetInt.h:26,
                 from /tmp/modconfig-paeKFD/vmnet-only/bridge.c:52:
/tmp/modconfig-paeKFD/vmnet-only/vm_device_version.h:56:0: Warnung: »PCI_VENDOR_ID_VMWARE« redefiniert
 #define PCI_VENDOR_ID_VMWARE                    0x15AD
 ^
In file included from include/linux/pci.h:35:0,
                 from /tmp/modconfig-paeKFD/vmnet-only/compat_netdevice.h:27,
                 from /tmp/modconfig-paeKFD/vmnet-only/bridge.c:51:
include/linux/pci_ids.h:2252:0: Anmerkung: dies ist die Stelle der vorherigen Definition
 #define PCI_VENDOR_ID_VMWARE  0x15ad
 ^
In file included from /tmp/modconfig-paeKFD/vmnet-only/bridge.c:50:0:
/tmp/modconfig-paeKFD/vmnet-only/bridge.c: In Funktion »VNetBridgeUp«:
/tmp/modconfig-paeKFD/vmnet-only/vmnetInt.h:81:40: Fehler: Zu wenige Argumente für Funktion »sk_alloc«
 #   define compat_sk_alloc(_bri, _pri) sk_alloc(&init_net, \
                                        ^
/tmp/modconfig-paeKFD/vmnet-only/bridge.c:952:17: Anmerkung: bei Substitution des Makros »compat_sk_alloc«
    bridge->sk = compat_sk_alloc(bridge, GFP_ATOMIC);
                 ^
In file included from /tmp/modconfig-paeKFD/vmnet-only/compat_sock.h:23:0,
                 from /tmp/modconfig-paeKFD/vmnet-only/bridge.c:35:
include/net/sock.h:1511:14: Anmerkung: hier deklariert
 struct sock *sk_alloc(struct net *net, int family, gfp_t priority,
              ^
scripts/Makefile.build:258: recipe for target '/tmp/modconfig-paeKFD/vmnet-only/bridge.o' failed
make[2]: *** [/tmp/modconfig-paeKFD/vmnet-only/bridge.o] Error 1
make[2]: *** Warte auf noch nicht beendete Prozesse...
Makefile:1378: recipe for target '_module_/tmp/modconfig-paeKFD/vmnet-only' failed
make[1]: *** [_module_/tmp/modconfig-paeKFD/vmnet-only] Error 2
make[1]: Leaving directory '/usr/src/kernel-4.4.13-server-1.mga5'
Makefile:120: recipe for target 'vmnet.ko' failed
make: *** [vmnet.ko] Error 2
make: Leaving directory '/tmp/modconfig-paeKFD/vmnet-only'
Unable to install all modules.  See log for details.

#


Two errors still remain:
Code: Select all
/tmp/modconfig-paeKFD/vmmon-only/linux/driver.c:403:8: Fehler: void-Wert nicht ignoriert wie es sein sollte (Error: void value not ignored like it should be)
/tmp/modconfig-paeKFD/vmnet-only/vmnetInt.h:81:40: Fehler: Zu wenige Argumente für Funktion »sk_alloc« (Error: not enough arguments for function »sk_alloc«)

Re: [PATCH] recent kernel 4.4 upgrade broke vmware workstati

PostPosted: Jul 18th, '16, 10:11
by magfan
I could solve the problem by upgrading to VMware-Workstation 11.1.4 build-3848939. This version does not require any patch (yet).

Re: [PATCH] recent kernel 4.4 upgrade broke vmware workstati

PostPosted: Aug 9th, '16, 19:55
by jiml8
I was just patching another copy of vmware workstation, and I realized that a number of the files that have to be patched are set as read only in the tar archives. Obviously, to patch them, writing has to be enabled.