vmware 7.1.4 and linux-2.6.38

Since few kernels, vmware won't compile, or at least the vmnet driver won't compile.

  CC [M]  /tmp/vmware-root/modules/vmnet-only/driver.o
/tmp/vmware-root/modules/vmnet-only/driver.c: In function ‘VNetFileOpUnlockedIoctl’:
/tmp/vmware-root/modules/vmnet-only/driver.c:1137: error: implicit declaration of function ‘lock_kernel’
/tmp/vmware-root/modules/vmnet-only/driver.c:1139: error: implicit declaration of function ‘unlock_kernel’
make[4]: *** [/tmp/vmware-root/modules/vmnet-only/driver.o] Erreur 1
make[3]: *** [_module_/tmp/vmware-root/modules/vmnet-only] Erreur 2
make[2]: *** [sub-make] Erreur 2
make[1]: *** [all] Erreur 2
make[1]: quittant le répertoire « /usr/src/linux-headers-2.6.38-2-686-bigmem »
make: *** [vmnet.ko] Erreur 2
make: quittant le répertoire « /tmp/vmware-root/modules/vmnet-only »

Fortunately, there is a patch for this !

diff -u vmnet-only//driver.c /usr/lib/vmware/modules/source/vmnet-only//driver.c
--- vmnet-only//driver.c        2011-03-26 01:37:29.000000000 -0400
+++ /usr/lib/vmware/modules/source/vmnet-only//driver.c 2011-05-05 10:36:11.918545812 -0400
@@ -264,11 +264,11 @@
                            struct file * filp)  // IN:
 {
    int ret = -ENOTTY;
-   lock_kernel();
+   lock_flocks();
    if (filp && filp->f_op && filp->f_op->ioctl == VNetFileOpIoctl) {
       ret = VNetFileOpIoctl(filp->f_dentry->d_inode, filp, iocmd, ioarg);
    }
-   unlock_kernel();
+   unlock_flocks();
    return ret;
 }

@@ -1134,9 +1134,9 @@
    if (filp && filp->f_dentry) {
       inode = filp->f_dentry->d_inode;
    }
-   lock_kernel();
+   lock_flocks();
    err = VNetFileOpIoctl(inode, filp, iocmd, ioarg);
-   unlock_kernel();
+   unlock_flocks();
    return err;
 }
#endif

Patch found on http://communities.vmware.com/message/1749211#1749211.

Here is the archive to extract in /usr/lib/vmware/modules/source. bunzip2 the file, it's final name must be vmnet.tar (do not extract the data from the tar file)

Haut de page