diff -urN a/lib/modules/source/vmci-only/linux/vmciKernelIf.c b/lib/modules/source/vmci-only/linux/vmciKernelIf.c --- a/lib/modules/source/vmci-only/linux/vmciKernelIf.c 2009-10-20 22:31:34.000000000 -0200 +++ b/lib/modules/source/vmci-only/linux/vmciKernelIf.c 2010-04-18 00:00:00.000000000 -0300 @@ -36,6 +36,7 @@ #include "compat_module.h" #include "compat_version.h" +#include "compat_sched.h" #include "compat_wait.h" #include "compat_interrupt.h" #include "compat_spinlock.h" diff -urN a/lib/modules/source/vmci-only/Makefile b/lib/modules/source/vmci-only/Makefile --- a/lib/modules/source/vmci-only/Makefile 2009-10-20 22:31:34.000000000 -0200 +++ b/lib/modules/source/vmci-only/Makefile 2010-03-31 00:00:00.000000000 -0300 @@ -97,8 +97,11 @@ MAKEOVERRIDES := $(filter-out CC=%,$(MAKEOVERRIDES)) +postbuild:: ; + $(DRIVER_KO): make -C $(BUILD_DIR) SUBDIRS=$$PWD SRCROOT=$$PWD/$(SRCROOT) modules + make -C $$PWD SRCROOT=$$PWD/$(SRCROOT) postbuild else @@ -113,12 +116,12 @@ vm_check_build = $(shell if $(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) \ $(CPPFLAGS) $(CFLAGS) $(CFLAGS_KERNEL) \ - $(EXTRA_CFLAGS) -Iinclude2/asm/mach-default \ + $(EXTRA_CFLAGS) -I$(HEADER_DIR) -Iinclude2/asm/mach-default \ -DKBUILD_BASENAME=\"$(DRIVER)\" \ -Werror -S -o /dev/null -xc $(1) \ > /dev/null 2>&1; then echo "$(2)"; else echo "$(3)"; fi) -CC_WARNINGS := -Wall -Wstrict-prototypes +CC_WARNINGS := -Wall -Wstrict-prototypes -Wno-unused -Wno-uninitialized -Wno-undef CC_OPTS := $(GLOBAL_DEFS) $(CC_WARNINGS) -DVMW_USING_KBUILD ifdef VMX86_DEVEL CC_OPTS += -DVMX86_DEVEL diff -urN a/lib/modules/source/vmci-only/Makefile.kernel b/lib/modules/source/vmci-only/Makefile.kernel --- a/lib/modules/source/vmci-only/Makefile.kernel 2009-10-20 22:31:34.000000000 -0200 +++ b/lib/modules/source/vmci-only/Makefile.kernel 2010-03-31 00:00:00.000000000 -0300 @@ -35,3 +35,6 @@ .tmp_versions Module.symvers Modules.symvers \ $(foreach dir,linux/ common/ \ ./,$(addprefix $(dir),.*.cmd .*.o.flags *.o))) + +postbuild:: + cp -f $(SRCROOT)/Module.symvers /tmp/VMwareVMCIModule.symvers diff -urN a/lib/modules/source/vmmon-only/common/vmx86.c b/lib/modules/source/vmmon-only/common/vmx86.c --- a/lib/modules/source/vmmon-only/common/vmx86.c 2009-10-20 22:31:31.000000000 -0200 +++ b/lib/modules/source/vmmon-only/common/vmx86.c 2010-03-31 00:00:00.000000000 -0300 @@ -1144,7 +1144,7 @@ * * freq fits into 64 bits and that tDiff fits into 32 bits. This * is safe given the values used on Linux. */ - Div643264(cDiff * freq, tDiff, &hz, &tmp); + Div643264(cDiff * freq, tDiff, (uint64 *)&hz, (uint32 *)&tmp); hz += 500; /* * If result in kHz cannot fit into 32 bits, we would get a divide @@ -1153,7 +1153,7 @@ if ((uint32)(hz >> 32) >= 1000) { goto failure; } - Div643232(hz, 1000, &tmpkHz, &tmp); + Div643232(hz, 1000, &tmpkHz, (uint32 *)&tmp); kHz = tmpkHz; } #endif diff -urN a/lib/modules/source/vmmon-only/include/compat_cred.h b/lib/modules/source/vmmon-only/include/compat_cred.h --- a/lib/modules/source/vmmon-only/include/compat_cred.h 1969-12-31 21:00:00.000000000 -0300 +++ b/lib/modules/source/vmmon-only/include/compat_cred.h 2010-03-31 00:00:00.000000000 -0300 @@ -0,0 +1,16 @@ +#ifndef __COMPAT_CRED_H__ +#define __COMPAT_CRED_H__ + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 29) +#define current_uid() current->uid +#define current_gid() current->gid +#define current_suid() current->suid +#define current_sgid() current->sgid +#define current_euid() current->euid +#define current_egid() current->egid +#define current_fsuid() current->fsuid +#define current_fsgid() current->fsgid +#define current_cap() current->cap_effective +#endif + +#endif diff -urN a/lib/modules/source/vmmon-only/include/x86msr.h b/lib/modules/source/vmmon-only/include/x86msr.h --- a/lib/modules/source/vmmon-only/include/x86msr.h 2009-10-20 22:31:31.000000000 -0200 +++ b/lib/modules/source/vmmon-only/include/x86msr.h 2010-03-31 00:00:00.000000000 -0300 @@ -161,7 +161,9 @@ #define MSR_CLOCK_MODULATION 0x0000019A // Thermal Monitor Control (rw) #define MSR_THERM_INTERRUPT 0x0000019B // Thermal Interrupt Control (rw) #define MSR_THERM_STATUS 0x0000019C // Thermal Monitor Status (rw) +#ifndef MSR_THERM2_CTL #define MSR_THERM2_CTL 0x0000019D // Thermal Monitor 2 Control (ro) +#endif /* MSR_MISC_ENABLE bits (Intel) */ #define MSR_MISC_ENABLE_FOPCODE_COMPAT (1LL<<2) diff -urN a/lib/modules/source/vmmon-only/include/x86svm.h b/lib/modules/source/vmmon-only/include/x86svm.h --- a/lib/modules/source/vmmon-only/include/x86svm.h 2009-10-20 22:31:31.000000000 -0200 +++ b/lib/modules/source/vmmon-only/include/x86svm.h 2010-03-31 00:00:00.000000000 -0300 @@ -47,10 +47,14 @@ #endif /* SVM related MSRs */ +#ifndef MSR_VM_CR #define MSR_VM_CR 0xC0010114 +#endif #define MSR_IGNNE 0xC0010115 #define MSR_SMM_CTL 0xC0010116 +#ifndef MSR_VM_HSAVE_PA #define MSR_VM_HSAVE_PA 0xC0010117 +#endif #define MSR_VM_CR_SVM_LOCK 0x0000000000000008ULL #define MSR_VM_CR_SVME_DISABLE 0x0000000000000010ULL diff -urN a/lib/modules/source/vmmon-only/linux/driver.c b/lib/modules/source/vmmon-only/linux/driver.c --- a/lib/modules/source/vmmon-only/linux/driver.c 2009-10-20 22:31:31.000000000 -0200 +++ b/lib/modules/source/vmmon-only/linux/driver.c 2010-03-31 00:00:00.000000000 -0300 @@ -34,6 +34,7 @@ #include "compat_timer.h" #include "compat_mm.h" #include "compat_highmem.h" +#include "compat_cred.h" #include #include @@ -1984,10 +1985,10 @@ } case IOCTL_VMX86_ALLOW_CORE_DUMP: - if (current->euid == current->uid && - current->fsuid == current->uid && - current->egid == current->gid && - current->fsgid == current->gid) { + if (current_euid() == current_uid() && + current_fsuid() == current_uid() && + current_egid() == current_gid() && + current_fsgid() == current_gid()) { #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 23) || defined(MMF_DUMPABLE) /* Dump core, readable by user. */ set_bit(MMF_DUMPABLE, ¤t->mm->flags); diff -urN a/lib/modules/source/vmmon-only/linux/hostif.c b/lib/modules/source/vmmon-only/linux/hostif.c --- a/lib/modules/source/vmmon-only/linux/hostif.c 2009-10-20 22:31:31.000000000 -0200 +++ b/lib/modules/source/vmmon-only/linux/hostif.c 2010-03-31 00:00:00.000000000 -0300 @@ -2576,6 +2576,7 @@ Bool setVMPtr, // IN: Bool probe) // IN: { +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 25) #if defined(CONFIG_SMP) || defined(CONFIG_X86_UP_IOAPIC) || \ defined(CONFIG_X86_UP_APIC) || defined(CONFIG_X86_LOCAL_APIC) VA kAddr; @@ -2601,6 +2602,7 @@ vm->hostAPIC = NULL; } #endif +#endif return TRUE; } @@ -3456,7 +3458,6 @@ oldFS = get_fs(); set_fs(KERNEL_DS); compat_allow_signal(SIGKILL); - cap_raise(current->cap_effective, CAP_SYS_RESOURCE); compat_set_user_nice(current, linuxState.fastClockPriority); while (linuxState.fastClockRate > HZ + HZ/16) { @@ -3580,20 +3581,12 @@ Bool cap; long pid; - fsuid = current->fsuid; - current->fsuid = 0; filp = filp_open("/dev/rtc", O_RDONLY, 0); - current->fsuid = fsuid; if (IS_ERR(filp)) { Warning("/dev/rtc open failed: %d\n", (int)(VA)filp); return -(int)(VA)filp; } - cap = cap_raised(current->cap_effective, CAP_SYS_RESOURCE); - cap_raise(current->cap_effective, CAP_SYS_RESOURCE); res = HostIFDoIoctl(filp, RTC_PIE_ON, 0); - if (!cap) { - cap_lower(current->cap_effective, CAP_SYS_RESOURCE); - } if (res < 0) { Warning("/dev/rtc enable interrupt failed: %d\n", res); compat_filp_close(filp, current->files); diff -urN a/lib/modules/source/vmmon-only/Makefile b/lib/modules/source/vmmon-only/Makefile --- a/lib/modules/source/vmmon-only/Makefile 2009-10-20 22:31:31.000000000 -0200 +++ b/lib/modules/source/vmmon-only/Makefile 2010-03-31 00:00:00.000000000 -0300 @@ -113,12 +113,12 @@ vm_check_build = $(shell if $(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) \ $(CPPFLAGS) $(CFLAGS) $(CFLAGS_KERNEL) \ - $(EXTRA_CFLAGS) -Iinclude2/asm/mach-default \ + $(EXTRA_CFLAGS) -I$(HEADER_DIR) -Iinclude2/asm/mach-default \ -DKBUILD_BASENAME=\"$(DRIVER)\" \ -Werror -S -o /dev/null -xc $(1) \ > /dev/null 2>&1; then echo "$(2)"; else echo "$(3)"; fi) -CC_WARNINGS := -Wall -Wstrict-prototypes +CC_WARNINGS := -Wall -Wstrict-prototypes -Wno-unused -Wno-uninitialized -Wno-undef CC_OPTS := $(GLOBAL_DEFS) $(CC_WARNINGS) -DVMW_USING_KBUILD ifdef VMX86_DEVEL CC_OPTS += -DVMX86_DEVEL diff -urN a/lib/modules/source/vmnet-only/Makefile b/lib/modules/source/vmnet-only/Makefile --- a/lib/modules/source/vmnet-only/Makefile 2009-10-20 22:31:33.000000000 -0200 +++ b/lib/modules/source/vmnet-only/Makefile 2010-03-31 00:00:00.000000000 -0300 @@ -113,12 +113,12 @@ vm_check_build = $(shell if $(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) \ $(CPPFLAGS) $(CFLAGS) $(CFLAGS_KERNEL) \ - $(EXTRA_CFLAGS) -Iinclude2/asm/mach-default \ + $(EXTRA_CFLAGS) -I$(HEADER_DIR) -Iinclude2/asm/mach-default \ -DKBUILD_BASENAME=\"$(DRIVER)\" \ -Werror -S -o /dev/null -xc $(1) \ > /dev/null 2>&1; then echo "$(2)"; else echo "$(3)"; fi) -CC_WARNINGS := -Wall -Wstrict-prototypes +CC_WARNINGS := -Wall -Wstrict-prototypes -Wno-unused -Wno-uninitialized -Wno-undef CC_OPTS := $(GLOBAL_DEFS) $(CC_WARNINGS) -DVMW_USING_KBUILD ifdef VMX86_DEVEL CC_OPTS += -DVMX86_DEVEL diff -urN a/lib/modules/source/vmnet-only/netif.c b/lib/modules/source/vmnet-only/netif.c --- a/lib/modules/source/vmnet-only/netif.c 2009-10-20 22:31:32.000000000 -0200 +++ b/lib/modules/source/vmnet-only/netif.c 2010-03-31 00:00:00.000000000 -0300 @@ -197,7 +197,22 @@ static void VNetNetIfSetup(struct net_device *dev) // IN: { +#ifdef HAVE_NET_DEVICE_OPS + static const struct net_device_ops vnetNetifOps = { + .ndo_init = VNetNetifProbe, + .ndo_open = VNetNetifOpen, + .ndo_stop = VNetNetifClose, + .ndo_start_xmit = VNetNetifStartXmit, + .ndo_set_multicast_list = VNetNetifSetMulticast, + .ndo_set_mac_address = VNetNetifSetMAC, + .ndo_get_stats = VNetNetifGetStats, + }; +#endif + ether_setup(dev); // turns on IFF_BROADCAST, IFF_MULTICAST +#ifdef HAVE_NET_DEVICE_OPS + dev->netdev_ops = &vnetNetifOps; +#else dev->init = VNetNetifProbe; dev->open = VNetNetifOpen; dev->hard_start_xmit = VNetNetifStartXmit; @@ -205,6 +220,8 @@ dev->get_stats = VNetNetifGetStats; dev->set_mac_address = VNetNetifSetMAC; dev->set_multicast_list = VNetNetifSetMulticast; +#endif + #ifdef KERNEL_2_3_43 /* * We cannot stuck... If someone will report problems under @@ -318,13 +335,21 @@ memcpy(netIf->devName, devName, sizeof netIf->devName); NULL_TERMINATE_STRING(netIf->devName); +#ifdef HAVE_NETDEV_PRIV + dev = compat_alloc_netdev(sizeof(VNetNetIF *), netIf->devName, VNetNetIfSetup); + if (!dev) { + retval = -ENOMEM; + goto out; + } + *(VNetNetIF **)netdev_priv(dev) = netIf; +#else dev = compat_alloc_netdev(0, netIf->devName, VNetNetIfSetup); if (!dev) { retval = -ENOMEM; goto out; } - - dev->priv = netIf; + dev->priv = netIf; +#endif netIf->dev = dev; memcpy(dev->dev_addr, netIf->port.paddr, sizeof netIf->port.paddr); @@ -566,7 +591,11 @@ VNetNetifStartXmit(struct sk_buff *skb, // IN: struct net_device *dev) // IN: { +#ifdef HAVE_NETDEV_PRIV + VNetNetIF *netIf = *(VNetNetIF **)netdev_priv(dev); +#else VNetNetIF *netIf = (VNetNetIF*)dev->priv; +#endif if(skb == NULL) { return 0; @@ -618,7 +647,11 @@ VNetNetifSetMAC(struct net_device *dev, // IN: void *p) // IN: { +#ifdef HAVE_NETDEV_PRIV + VNetNetIF *netIf = *(VNetNetIF **)netdev_priv(dev); +#else VNetNetIF *netIf = (VNetNetIF*)dev->priv; +#endif struct sockaddr const *addr = p; if (!VMX86_IS_STATIC_MAC(addr->sa_data)) { return -EINVAL; @@ -675,7 +708,11 @@ struct net_device_stats * VNetNetifGetStats(struct net_device *dev) // IN: { +#ifdef HAVE_NETDEV_PRIV + VNetNetIF *netIf = *(VNetNetIF **)netdev_priv(dev); +#else VNetNetIF *netIf = (VNetNetIF*)dev->priv; +#endif return &(netIf->stats); } diff -urN a/lib/modules/source/vmnet-only/vnetUserListener.c b/lib/modules/source/vmnet-only/vnetUserListener.c --- a/lib/modules/source/vmnet-only/vnetUserListener.c 2009-10-20 22:31:32.000000000 -0200 +++ b/lib/modules/source/vmnet-only/vnetUserListener.c 2010-03-31 00:00:00.000000000 -0300 @@ -33,6 +33,7 @@ #include #include "compat_skbuff.h" #include "compat_wait.h" +#include "compat_sched.h" #include "vnetInt.h" typedef struct VNetUserListener_EventNode VNetUserListener_EventNode; diff -urN a/lib/modules/source/vsock-only/Makefile b/lib/modules/source/vsock-only/Makefile --- a/lib/modules/source/vsock-only/Makefile 2009-10-20 22:31:35.000000000 -0200 +++ b/lib/modules/source/vsock-only/Makefile 2010-03-31 00:00:00.000000000 -0300 @@ -97,7 +97,9 @@ MAKEOVERRIDES := $(filter-out CC=%,$(MAKEOVERRIDES)) -$(DRIVER_KO): +prebuild:: ; + +$(DRIVER_KO): prebuild make -C $(BUILD_DIR) SUBDIRS=$$PWD SRCROOT=$$PWD/$(SRCROOT) modules else @@ -113,12 +115,12 @@ vm_check_build = $(shell if $(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) \ $(CPPFLAGS) $(CFLAGS) $(CFLAGS_KERNEL) \ - $(EXTRA_CFLAGS) -Iinclude2/asm/mach-default \ + $(EXTRA_CFLAGS) -I$(HEADER_DIR) -Iinclude2/asm/mach-default \ -DKBUILD_BASENAME=\"$(DRIVER)\" \ -Werror -S -o /dev/null -xc $(1) \ > /dev/null 2>&1; then echo "$(2)"; else echo "$(3)"; fi) -CC_WARNINGS := -Wall -Wstrict-prototypes +CC_WARNINGS := -Wall -Wstrict-prototypes -Wno-unused -Wno-uninitialized -Wno-undef CC_OPTS := $(GLOBAL_DEFS) $(CC_WARNINGS) -DVMW_USING_KBUILD ifdef VMX86_DEVEL CC_OPTS += -DVMX86_DEVEL diff -urN a/lib/modules/source/vsock-only/Makefile.kernel b/lib/modules/source/vsock-only/Makefile.kernel --- a/lib/modules/source/vsock-only/Makefile.kernel 2009-10-20 22:31:35.000000000 -0200 +++ b/lib/modules/source/vsock-only/Makefile.kernel 2010-03-31 00:00:00.000000000 -0300 @@ -41,3 +41,7 @@ .tmp_versions Module.symvers Modules.symvers \ $(foreach dir,./ linux/ \ ,$(addprefix $(dir),.*.cmd .*.o.flags *.o))) + +prebuild:: + cp -f /tmp/VMwareVMCIModule.symvers $(SRCROOT)/Module.symvers + rm -f /tmp/VMwareVMCIModule.symvers