linux-3.4.3 で VMware player をつかうためのパッチを書いたので,貼っておきます.
動作確認は VMware player 4.0.4 と linux-3.4.3 で行なっています
たぶん linux-3.2.x とか linux-3.3.x でも動きます.
diff -uNr original/vmblock-only/linux/filesystem.c vmblock-only/linux/filesystem.c --- original/vmblock-only/linux/filesystem.c 2012-06-09 15:50:06.000000000 +0900 +++ vmblock-only/linux/filesystem.c 2012-06-19 18:24:21.149878737 +0900 @@ -525,7 +525,11 @@ return -EINVAL; } +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 42, 0) && LINUX_VERSION_CODE < KERNEL_VERSION(3, 0, 0)) || LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0) + rootDentry = d_make_root(rootInode); +#else rootDentry = d_alloc_root(rootInode); +#endif if (!rootDentry) { iput(rootInode); return -ENOMEM; diff -uNr original/vmnet-only/filter.c vmnet-only/filter.c --- original/vmnet-only/filter.c 2012-06-09 16:29:57.000000000 +0900 +++ vmnet-only/filter.c 2012-06-19 18:16:30.564390201 +0900 @@ -40,6 +40,7 @@ #include "vnetInt.h" #include "vmnetInt.h" +#include "compat_module.h" // VNet_FilterLogPacket.action for dropped packets #define VNET_FILTER_ACTION_DRP (1) #define VNET_FILTER_ACTION_DRP_SHORT (2) diff -uNr original/vmnet-only/netif.c vmnet-only/netif.c --- original/vmnet-only/netif.c 2012-06-09 16:29:57.000000000 +0900 +++ vmnet-only/netif.c 2012-06-19 18:15:13.400443831 +0900 @@ -131,7 +131,10 @@ .ndo_stop = VNetNetifClose, .ndo_get_stats = VNetNetifGetStats, .ndo_set_mac_address = VNetNetifSetMAC, +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 42, 0) && LINUX_VERSION_CODE < KERNEL_VERSION(3, 0, 0)) || LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0) +#else .ndo_set_multicast_list = VNetNetifSetMulticast, +#endif /* * We cannot stuck... If someone will report problems under * low memory conditions or some such, we should enable it. diff -uNr original/vmnet-only/userif.c vmnet-only/userif.c --- original/vmnet-only/userif.c 2012-06-09 16:29:57.000000000 +0900 +++ vmnet-only/userif.c 2012-06-19 18:13:53.229577246 +0900 @@ -517,10 +517,18 @@ unsigned int tmpCsum; const void *vaddr; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 42, 0) && LINUX_VERSION_CODE < KERNEL_VERSION(3, 0, 0)) || LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0) + vaddr = kmap(skb_frag_page(frag)); +#else vaddr = kmap(frag->page); +#endif tmpCsum = csum_and_copy_to_user(vaddr + frag->page_offset, curr, frag->size, 0, &err); +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 42, 0) && LINUX_VERSION_CODE < KERNEL_VERSION(3, 0, 0)) || LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0) + kunmap(skb_frag_page(frag)); +#else kunmap(frag->page); +#endif if (err) { return err; }
( diff の取り方がいまいちですが,必要な人は各自なんとかしてください.)