I upgraded to Ubuntu 18.04 and the
vmmon.ko module for VMWare Workstation 12.5.9 now fails to build.
/usr/lib/vmware/modules/source/vmmon-only/linux/driver.c: In function ‘LinuxDriverInitTSCkHz’: /usr/lib/vmware/modules/source/vmmon-only/linux/driver.c:268:22: error: assignment from incompatible pointer type [-Werror=incompatible-pointer-types] tscTimer.function = LinuxDriverEstimateTSCkHzDeferred; ^ /usr/lib/vmware/modules/source/vmmon-only/linux/driver.c:270:12: error: ‘struct timer_list’ has no member named ‘data’ tscTimer.data = 0; ^ /usr/lib/vmware/modules/source/vmmon-only/linux/driver.c: In function ‘init_module’: /usr/lib/vmware/modules/source/vmmon-only/linux/driver.c:312:4: error: implicit declaration of function ‘init_timer’; did you mean ‘init_timers’? [-Werror=implicit-function-declaration] init_timer(&linuxState.pollTimer); ^~~~~~~~~~ init_timers /usr/lib/vmware/modules/source/vmmon-only/linux/driver.c:313:24: error: ‘struct timer_list’ has no member named ‘data’ linuxState.pollTimer.data = 0; ^ /usr/lib/vmware/modules/source/vmmon-only/linux/driver.c:314:34: error: assignment from incompatible pointer type [-Werror=incompatible-pointer-types] linuxState.pollTimer.function = LinuxDriverPollTimeout;
This seems like a minor change causing vmmon compile to fail, possibly that data structures have changed between versions of the kernel?
Edit: It seems that in Linux kernel v4.15
init_timer() interface has been removed
uname -a Linux hostnema 4.15.0-22-generic #24-Ubuntu SMP Wed May 16 12:15:17 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
Any suggestions on how I could begin to fix this?