VMware Communities
rileyb76
Enthusiast
Enthusiast

RHEL 6.8 64bit kernel update breaks Workstation

Guys,

After updating to RHEL 6.8 64bit (2.6.32-642.el6.x86_64), Workstation is unable to start.  We get the "unable to start services" error. 

vmware error 1.png

How would you all advise to fix this?  The log is attached.

Thanks!

8 Replies
ElCoyote_
Enthusiast
Enthusiast

I traced it back to netif.c from /usr/lib/vmware/modules/source/vmnet.tar unable to compile on RHEL6.8.

The actual error is as follows:

make: Entering directory `/tmp/modconfig-nis3ie/vmnet-only'

/usr/bin/make -C /lib/modules/2.6.32-642.el6.x86_64/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. \

          MODULEBUILDDIR= modules

make[1]: Entering directory `/usr/src/kernels/2.6.32-642.el6.x86_64'

  CC [M]  /tmp/modconfig-nis3ie/vmnet-only/driver.o

  CC [M]  /tmp/modconfig-nis3ie/vmnet-only/hub.o

  CC [M]  /tmp/modconfig-nis3ie/vmnet-only/userif.o

  CC [M]  /tmp/modconfig-nis3ie/vmnet-only/netif.o

  CC [M]  /tmp/modconfig-nis3ie/vmnet-only/bridge.o

  CC [M]  /tmp/modconfig-nis3ie/vmnet-only/procfs.o

  CC [M]  /tmp/modconfig-nis3ie/vmnet-only/smac_compat.o

  CC [M]  /tmp/modconfig-nis3ie/vmnet-only/smac.o

  CC [M]  /tmp/modconfig-nis3ie/vmnet-only/vnetEvent.o

  CC [M]  /tmp/modconfig-nis3ie/vmnet-only/vnetUserListener.o

In file included from include/linux/pci.h:61,

                 from /tmp/modconfig-nis3ie/vmnet-only/compat_netdevice.h:27,

                 from /tmp/modconfig-nis3ie/vmnet-only/netif.c:43:

include/linux/pci_ids.h:2177:1: warning: "PCI_VENDOR_ID_VMWARE" redefined

In file included from /tmp/modconfig-nis3ie/vmnet-only/net.h:38,

                 from /tmp/modconfig-nis3ie/vmnet-only/vnetInt.h:26,

                 from /tmp/modconfig-nis3ie/vmnet-only/netif.c:42:

/tmp/modconfig-nis3ie/vmnet-only/vm_device_version.h:56:1: warning: this is the location of the previous definition

/tmp/modconfig-nis3ie/vmnet-only/netif.c:153:79: error: macro "alloc_netdev" passed 4 arguments, but takes just 3

/tmp/modconfig-nis3ie/vmnet-only/netif.c: In function 'VNetNetIf_Create':

/tmp/modconfig-nis3ie/vmnet-only/netif.c:153: error: 'alloc_netdev' undeclared (first use in this function)

/tmp/modconfig-nis3ie/vmnet-only/netif.c:153: error: (Each undeclared identifier is reported only once

/tmp/modconfig-nis3ie/vmnet-only/netif.c:153: error: for each function it appears in.)

make[2]: *** [/tmp/modconfig-nis3ie/vmnet-only/netif.o] Error 1

make[2]: *** Waiting for unfinished jobs....

In file included from /tmp/modconfig-nis3ie/vmnet-only/net.h:38,

                 from /tmp/modconfig-nis3ie/vmnet-only/vnetInt.h:26,

The culprit appears to be this line:

#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 0) || defined(NET_NAME_USER)

   dev = alloc_netdev(sizeof *netIf, deviceName, NET_NAME_USER, VNetNetIfSetup);    <======================

#else

   dev = alloc_netdev(sizeof *netIf, deviceName, VNetNetIfSetup);

#endif

I don't think we should be there (that's obvisouly for 3.18.+ kernels or when NET_NAME_USER is defined).

I am currently testing this fix:

# diff netif.c.orig netif.c

153c153,155

<    dev = alloc_netdev(sizeof *netIf, deviceName, NET_NAME_USER, VNetNetIfSetup);

---

> // RHEL 6.8

> //   dev = alloc_netdev(sizeof *netIf, deviceName, NET_NAME_USER, VNetNetIfSetup);

>    dev = alloc_netdev(sizeof *netIf, deviceName, VNetNetIfSetup);

ElCoyote_
Enthusiast
Enthusiast

I can happily confirm that this workaround just works:

diff -u netif.c.orig netif.c

--- netif.c.orig        2016-04-14 19:48:47.000000000 -0400

+++ netif.c     2016-05-12 15:36:26.000000000 -0400

@@ -150,7 +150,9 @@

    NULL_TERMINATE_STRING(deviceName);

#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 0) || defined(NET_NAME_USER)

-   dev = alloc_netdev(sizeof *netIf, deviceName, NET_NAME_USER, VNetNetIfSetup);

+// RHEL 6.8

+//   dev = alloc_netdev(sizeof *netIf, deviceName, NET_NAME_USER, VNetNetIfSetup);

+   dev = alloc_netdev(sizeof *netIf, deviceName, VNetNetIfSetup);

#else

    dev = alloc_netdev(sizeof *netIf, deviceName, VNetNetIfSetup);

#endif

Apply to /usr/lib/vmware/modules/source/vmnet.tar

(it's an archive, you'd have to extract it, patch it and re-build the archive).

As in:

cd /tmp

tar xvf /usr/lib/vmware/modules/source/vmnet.tar

cd vmnet-only

patch -p0 < /tmp/above.patch

cd ..

tar cvf /usr/lib/vmware/modules/source/vmnet.tar vmnet-only

rileyb76
Enthusiast
Enthusiast

Thanks, but what is the actual code I paste into a file?

I'm no developer.

thanks for the help

edit:  I forgot to add that this is for Workstation 11.1.2.

0 Kudos
DarrenRichards
Contributor
Contributor

Thank you so much ElCoyote_ your solution worked perfectly for me and saved me a huge headache ... thanks for sharing !! :smileycool:

0 Kudos
ElCoyote_
Enthusiast
Enthusiast

Hi Riley,

The stuff I posted was for VMW 12.1.1.

You'll have to adapt it for your version or wait for VMWare to release a fix.

Regards,

Vincent

0 Kudos
DarrenRichards
Contributor
Contributor

I made the code changes to netif.c by hand as I am using 11.1.4 ...

At around line 153 in netif.c for 11.1.4 you will see the following :

#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 0) || defined(NET_NAME_USER)

   dev = alloc_netdev(sizeof *netIf, deviceName, NET_NAME_USER, VNetNetIfSetup);

#else

   dev = alloc_netdev(sizeof *netIf, deviceName, VNetNetIfSetup);

#endif

I trashed those 5 lines and replaced them with this one line :

   dev = alloc_netdev(sizeof *netIf, deviceName, VNetNetIfSetup);

Thanks again to ElCoyote_‌ ... I would still be swearing right now otherwise and probably for most of the weekend 🙂

bp787
Contributor
Contributor

Thank you SOOOOO much for this.  I just updated the kernel and all my vm's went to hell!  I spent a day trying to find the solution and kept missing this post...

YAY!

0 Kudos
OobidoobScoobyD
Contributor
Contributor

Ran into this problem a few months ago.  Searched for quite a while and never found this post.  Thought I would give it another try today.... and shazam!  The fix worked.

0 Kudos