VMware Communities
blastwave
Enthusiast
Enthusiast

workstation pro 12.5 vmnet broken on supported RHEL 6.8 config

firstly this is similar to Kernel 4.2 Breaks vmnet.. (again..)

So let's take a look at the situation which will happen over and over

for anyone on a production Linux config which is not based on latest

kernel 4.x or even kernel 3.x.  Yes this means all those Red Hat

Enterprise Linux people and there is a lot of them.

After a nice successful install ( in my case upgrade from 12.0.x ) you

will be told that all went well. Don't believe it. It just isn't true.

# /etc/rc.d/init.d/vmware start

Starting VMware services:

   Virtual machine monitor                                 [  OK  ]

   Virtual machine communication interface                 [  OK  ]

   VM communication interface socket family                [  OK  ]

   Blocking file system                                    [  OK  ]

   Virtual ethernet                                        [FAILED]

   VMware Authentication Daemon                            [  OK  ]

That is the vmnet kernel module broken as usual because of some

hack changes in vmnetInt.h which may require that compat_sk_alloc

be redefined as sk_alloc with four or more parameters. It is all

very shady and the sources are clear here in vmnet-only/compat_version.h.


The problems are in vmnetInt.h which wrongly applies too many parameters to sk_alloc

which we can see in /usr/src/kernels/`uname -r`/include/net/sock.h thus :

RHEL# cat -n /usr/src/kernels/`uname -r`/include/net/sock.h | head -1132 | tail -3

  1130  extern struct sock              *sk_alloc(struct net *net, int family,

  1131                                            gfp_t priority,

  1132                                            struct proto *prot);

RHEL#

Now see the VMware vmnet kernel module sources for vmnetInt.h :

RHEL# cat -n vmnetInt.h | head -89 | tail

    80  #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)

    81  #   define compat_sk_alloc(_bri, _pri) sk_alloc(&init_net, \

    82                                                  PF_NETLINK, _pri, &vmnet_proto, 1)

    83  #elif defined(VMW_NETDEV_HAS_NET)

    84  #   define compat_sk_alloc(_bri, _pri) sk_alloc(&init_net, \

    85                                                  PF_NETLINK, _pri, &vmnet_proto)

    86  #else

    87  #   define compat_sk_alloc(_bri, _pri) sk_alloc(PF_NETLINK, _pri, &vmnet_proto, 1)

    88  #endif

    89

See we have a conditional define there based on VMW_NETDEV_HAS_NET and also on

the version of the kernel. Well this is good ol Red Hat Enterprise Linux

so you can forget a version greater than 4.2.0 entirely. Nope we are

dealing with sk_alloc() as defined in /include/net/sock.h with four

parameters. No need for the trailing 1 there.  One may edit vmnetInt.h

and then set all versions of sk_alloc to a four parameter call and

the process still fails.

Every attempt to rebuild vmnet.ko fails and for reasons that are just

baffling the contents of vmnet.tar keeps getting extracted and then

recompiled when one runs :


RHEL# /usr/bin/vmware-modconfig --console --install-all

That puts out lots of messages but ultimately there is no vmnet.ko

produced and the one that gets created and installed during a "successful"

install of VMWare Workstation Pro 12.5 is quite useless.

Whats the magic here ?

0 Kudos
0 Replies