diff -urN source-OLD/vmblock-only/linux/control.c source-NEW/vmblock-only/linux/control.c --- source-OLD/vmblock-only/linux/control.c 2009-03-26 22:34:29.000000000 -0700 +++ source-NEW/vmblock-only/linux/control.c 2009-07-14 16:47:30.000000000 -0700 @@ -46,7 +46,9 @@ static struct proc_dir_entry *controlProcDirEntry; struct file_operations ControlFileOps = { +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 30) .owner = THIS_MODULE, +#endif .write = ControlFileOpWrite, .release = ControlFileOpRelease, }; @@ -156,7 +158,9 @@ return -EINVAL; } +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 30) controlProcDirEntry->owner = THIS_MODULE; +#endif /* Create /proc/fs/vmblock/mountPoint */ controlProcMountpoint = proc_mkdir(VMBLOCK_CONTROL_MOUNTPOINT, @@ -168,7 +172,9 @@ return -EINVAL; } +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 30) controlProcMountpoint->owner = THIS_MODULE; +#endif /* Create /proc/fs/vmblock/dev */ controlProcEntry = create_proc_entry(VMBLOCK_CONTROL_DEVNAME, diff -urN source-OLD/vmblock-only/Makefile source-NEW/vmblock-only/Makefile --- source-OLD/vmblock-only/Makefile 2009-03-26 22:34:29.000000000 -0700 +++ source-NEW/vmblock-only/Makefile 2009-07-14 16:47:30.000000000 -0700 @@ -122,7 +122,7 @@ 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) diff -urN source-OLD/vmci-only/Makefile source-NEW/vmci-only/Makefile --- source-OLD/vmci-only/Makefile 2009-03-26 22:34:31.000000000 -0700 +++ source-NEW/vmci-only/Makefile 2009-07-14 16:47:30.000000000 -0700 @@ -122,7 +122,7 @@ 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) diff -urN source-OLD/vmmon-only/include/x86svm.h source-NEW/vmmon-only/include/x86svm.h --- source-OLD/vmmon-only/include/x86svm.h 2009-03-26 22:34:27.000000000 -0700 +++ source-NEW/vmmon-only/include/x86svm.h 2009-07-14 16:47:30.000000000 -0700 @@ -47,10 +47,14 @@ #endif /* SVM related MSRs */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 30) #define MSR_VM_CR 0xC0010114 +#endif #define MSR_IGNNE 0xC0010115 #define MSR_SMM_CTL 0xC0010116 +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 30) #define MSR_VM_HSAVE_PA 0xC0010117 +#endif #define MSR_VM_CR_SVM_LOCK 0x0000000000000008ULL #define MSR_VM_CR_SVME_DISABLE 0x0000000000000010ULL diff -urN source-OLD/vmmon-only/linux/driver.c source-NEW/vmmon-only/linux/driver.c --- source-OLD/vmmon-only/linux/driver.c 2009-03-26 22:34:27.000000000 -0700 +++ source-NEW/vmmon-only/linux/driver.c 2009-07-14 16:47:30.000000000 -0700 @@ -1984,10 +1984,17 @@ } case IOCTL_VMX86_ALLOW_CORE_DUMP: +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 29) if (current->euid == current->uid && current->fsuid == current->uid && current->egid == current->gid && current->fsgid == current->gid) { +#else + if (current_euid() == current_uid() && + current_fsuid() == current_uid() && + current_egid() == current_gid() && + current_fsgid() == current_gid()) { +#endif #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 source-OLD/vmmon-only/linux/hostif.c source-NEW/vmmon-only/linux/hostif.c --- source-OLD/vmmon-only/linux/hostif.c 2009-03-26 22:34:26.000000000 -0700 +++ source-NEW/vmmon-only/linux/hostif.c 2009-07-14 16:47:30.000000000 -0700 @@ -3424,6 +3424,88 @@ } +/* krellan: Linux 2.6.29 compatibility functions for capabilities */ +/* Errors are logged but otherwise ignored */ + +void compat_cap_raise(int cap) +{ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 29) + cap_raise(current->cap_effective, cap); +#else + struct cred *new_cred; + + new_cred = prepare_creds(); + if (new_cred != NULL) + { + cap_raise(new_cred->cap_effective, cap); + commit_creds(new_cred); + } + else + { + Log("compat_cap_raise(%d) prepare_creds(): Out of memory\n", cap); + } +#endif +} + +void compat_cap_lower(int cap) +{ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 29) + cap_lower(current->cap_effective, cap); +#else + struct cred *new_cred; + + new_cred = prepare_creds(); + if (new_cred != NULL) + { + cap_lower(new_cred->cap_effective, cap); + commit_creds(new_cred); + } + else + { + Log("compat_cap_lower(%d) prepare_creds(): Out of memory\n", cap); + } +#endif +} + +int compat_cap_raised(int cap) +{ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 29) + return cap_raised(current->cap_effective, cap); +#else + return cap_raised(current_cap(), cap); +#endif +} + +int compat_get_fsuid(void) +{ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 29) + return current->fsuid; +#else + return current_fsuid(); +#endif +} + +void compat_set_fsuid(int fsuid) +{ +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 29) + current->fsuid = fsuid; +#else + struct cred *new_cred; + + new_cred = prepare_creds(); + if (new_cred != NULL) + { + new_cred->fsuid = fsuid; + commit_creds(new_cred); + } + else + { + Log("compat_set_fsuid(%d) prepare_creds(): Out of memory\n", fsuid); + } +#endif +} + + /* *---------------------------------------------------------------------- * @@ -3456,7 +3538,7 @@ oldFS = get_fs(); set_fs(KERNEL_DS); compat_allow_signal(SIGKILL); - cap_raise(current->cap_effective, CAP_SYS_RESOURCE); + compat_cap_raise(CAP_SYS_RESOURCE); compat_set_user_nice(current, linuxState.fastClockPriority); while (linuxState.fastClockRate > HZ + HZ/16) { @@ -3580,19 +3662,19 @@ Bool cap; long pid; - fsuid = current->fsuid; - current->fsuid = 0; + fsuid = compat_get_fsuid(); + compat_set_fsuid(0); filp = filp_open("/dev/rtc", O_RDONLY, 0); - current->fsuid = fsuid; + compat_set_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); + cap = compat_cap_raised(CAP_SYS_RESOURCE); + compat_cap_raise(CAP_SYS_RESOURCE); res = HostIFDoIoctl(filp, RTC_PIE_ON, 0); if (!cap) { - cap_lower(current->cap_effective, CAP_SYS_RESOURCE); + compat_cap_lower(CAP_SYS_RESOURCE); } if (res < 0) { Warning("/dev/rtc enable interrupt failed: %d\n", res); diff -urN source-OLD/vmmon-only/Makefile source-NEW/vmmon-only/Makefile --- source-OLD/vmmon-only/Makefile 2009-03-26 22:34:27.000000000 -0700 +++ source-NEW/vmmon-only/Makefile 2009-07-14 16:47:30.000000000 -0700 @@ -122,7 +122,7 @@ 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) diff -urN source-OLD/vmnet-only/Makefile source-NEW/vmnet-only/Makefile --- source-OLD/vmnet-only/Makefile 2009-03-26 22:34:28.000000000 -0700 +++ source-NEW/vmnet-only/Makefile 2009-07-14 16:47:30.000000000 -0700 @@ -122,7 +122,7 @@ 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) diff -urN source-OLD/vmnet-only/netif.c source-NEW/vmnet-only/netif.c --- source-OLD/vmnet-only/netif.c 2009-03-26 22:34:28.000000000 -0700 +++ source-NEW/vmnet-only/netif.c 2009-07-14 17:24:04.000000000 -0700 @@ -194,10 +194,25 @@ *---------------------------------------------------------------------- */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 31) +static const struct net_device_ops vnet_netdev_ops = { + .ndo_init = VNetNetifProbe, + .ndo_open = VNetNetifOpen, + .ndo_start_xmit = VNetNetifStartXmit, + .ndo_stop = VNetNetifClose, + .ndo_get_stats = VNetNetifGetStats, + .ndo_set_mac_address = VNetNetifSetMAC, + .ndo_set_multicast_list = VNetNetifSetMulticast, +}; +#endif + static void VNetNetIfSetup(struct net_device *dev) // IN: { ether_setup(dev); // turns on IFF_BROADCAST, IFF_MULTICAST +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 31) + dev->netdev_ops = &vnet_netdev_ops; +#else dev->init = VNetNetifProbe; dev->open = VNetNetifOpen; dev->hard_start_xmit = VNetNetifStartXmit; @@ -205,6 +220,7 @@ 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 @@ -324,7 +340,11 @@ goto out; } +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 29) dev->priv = netIf; +#else + dev->ml_priv = netIf; +#endif netIf->dev = dev; memcpy(dev->dev_addr, netIf->port.paddr, sizeof netIf->port.paddr); @@ -566,7 +586,11 @@ VNetNetifStartXmit(struct sk_buff *skb, // IN: struct net_device *dev) // IN: { +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 29) VNetNetIF *netIf = (VNetNetIF*)dev->priv; +#else + VNetNetIF *netIf = (VNetNetIF*)dev->ml_priv; +#endif if(skb == NULL) { return 0; @@ -618,7 +642,11 @@ VNetNetifSetMAC(struct net_device *dev, // IN: void *p) // IN: { +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 29) VNetNetIF *netIf = (VNetNetIF*)dev->priv; +#else + VNetNetIF *netIf = (VNetNetIF*)dev->ml_priv; +#endif struct sockaddr const *addr = p; if (!VMX86_IS_STATIC_MAC(addr->sa_data)) { return -EINVAL; @@ -675,7 +703,11 @@ struct net_device_stats * VNetNetifGetStats(struct net_device *dev) // IN: { +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 29) VNetNetIF *netIf = (VNetNetIF*)dev->priv; +#else + VNetNetIF *netIf = (VNetNetIF*)dev->ml_priv; +#endif return &(netIf->stats); } diff -urN source-OLD/vsock-only/Makefile source-NEW/vsock-only/Makefile --- source-OLD/vsock-only/Makefile 2009-03-26 22:34:32.000000000 -0700 +++ source-NEW/vsock-only/Makefile 2009-07-14 16:47:30.000000000 -0700 @@ -122,7 +122,7 @@ 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)