Not a member of Pastebin yet?
                        Sign Up,
                        it unlocks many cool features!                    
                - diff -urN vmware-server-kernel.orig/vmmon-only/autoconf/fault.c vmware-server-kernel/vmmon-only/autoconf/fault.c
 - --- vmware-server-kernel.orig/vmmon-only/autoconf/fault.c 1970-01-01 01:00:00.000000000 +0100
 - +++ vmware-server-kernel/vmmon-only/autoconf/fault.c 2008-09-21 16:56:04.000000000 +0200
 - @@@@ -0,0 +1,18 @@
 - +/*
 - + * we'll try to use fault instead of nopage since 2.6.26
 - + */
 - +#include <linux/autoconf.h>
 - +#include <linux/version.h>
 - +
 - +#include <linux/mm.h>
 - +
 - +int LinuxDriverFault(struct vm_area_struct *vma,
 - + struct vm_fault *vmf) {
 - + (void)vma;
 - + (void)vmf;
 - + return VM_FAULT_MAJOR;
 - +}
 - +
 - +struct vm_operations_struct vmuser_mops = {
 - + .fault = LinuxDriverFault
 - +};
 - diff -ur vmware-server-kernel.orig/vmmon-only/linux/driver.c vmware-server-kernel/vmmon-only/linux/driver.c
 - --- vmware-server-kernel.orig/vmmon-only/linux/driver.c 2008-09-21 16:46:30.000000000 +0200
 - +++ vmware-server-kernel/vmmon-only/linux/driver.c 2008-09-21 17:17:54.000000000 +0200
 - @@@@ -122,7 +122,12 @@
 - static int LinuxDriver_Close(struct inode *inode, struct file *filp);
 - static unsigned int LinuxDriverPoll(struct file *file, poll_table *wait);
 - -#if defined(VMW_NOPAGE_261)
 - +#if defined(VMW_FAULT)
 - +int LinuxDriverFault(struct vm_area_struct *vma,
 - + struct vm_fault *vmf);
 - +int LinuxDriverLockedFault(struct vm_area_struct *vma,
 - + struct vm_fault *vmf);
 - +#elif defined(VMW_NOPAGE_261)
 - static struct page *LinuxDriverNoPage(struct vm_area_struct *vma,
 - unsigned long address, int *type);
 - static struct page *LinuxDriverLockedNoPage(struct vm_area_struct *vma,
 - @@@@ -143,11 +148,19 @@
 - static void LinuxDriverPollTimeout(unsigned long clientData);
 - static struct vm_operations_struct vmuser_mops = {
 - +#if defined(VMW_FAULT)
 - + .fault = LinuxDriverFault
 - +#else
 - .nopage = LinuxDriverNoPage
 - +#endif
 - };
 - struct vm_operations_struct vmuser_locked_mops = {
 - +#if defined(VMW_FAULT)
 - + .fault = LinuxDriverLockedFault
 - +#else
 - .nopage = LinuxDriverLockedNoPage
 - +#endif
 - };
 - static struct file_operations vmuser_fops;
 - @@@@ -987,7 +1000,10 @@
 - *-----------------------------------------------------------------------------
 - */
 - -#ifdef VMW_NOPAGE_261
 - +#if defined(VMW_FAULT)
 - +int LinuxDriverFault(struct vm_area_struct *vma, //IN
 - + struct vm_fault *vmf) //INOUT
 - +#elif defined(VMW_NOPAGE_261)
 - static struct page *LinuxDriverNoPage(struct vm_area_struct *vma, //IN
 - unsigned long address, //IN
 - int *type) //OUT: Fault type
 - @@@@ -1004,12 +1020,19 @@
 - VMLinux *vmLinux = (VMLinux *) vma->vm_file->private_data;
 - unsigned long pg;
 - - pg = (address - vma->vm_start) >> PAGE_SHIFT;
 - + pg = ((unsigned long)vmf->virtual_address - vma->vm_start) >> PAGE_SHIFT; // use vmf->pgoff?
 - if (pg >= vmLinux->size4Gb) {
 - +#ifdef VMW_FAULT
 - + return VM_FAULT_SIGBUS;
 - +#else
 - return 0;
 - +#endif
 - }
 - get_page(virt_to_page(vmLinux->pages4Gb[pg]));
 - -#ifdef KERNEL_2_4_0
 - +#if defined(VMW_FAULT)
 - + vmf->page = virt_to_page(vmLinux->pages4Gb[pg]);
 - + return VM_FAULT_MAJOR;
 - +#elif defined(KERNEL_2_4_0)
 - #ifdef VMW_NOPAGE_261
 - *type = VM_FAULT_MINOR;
 - #endif
 - @@@@ -1037,7 +1060,10 @@
 - *-----------------------------------------------------------------------------
 - */
 - -#ifdef VMW_NOPAGE_261
 - +#if defined(VMW_FAULT)
 - +int LinuxDriverLockedFault(struct vm_area_struct *vma, //IN
 - + struct vm_fault *vmf) //INOUT
 - +#elif defined(VMW_NOPAGE_261)
 - static struct page *LinuxDriverLockedNoPage(struct vm_area_struct *vma, //IN
 - unsigned long address, //IN
 - int *type) //OUT: Fault type
 - @@@@ -1057,33 +1083,56 @@
 - struct VMHostEntry* vmhe;
 - struct page* result;
 - - pg = ((address - vma->vm_start) >> PAGE_SHIFT) + compat_vm_pgoff(vma);
 - + pg = (((unsigned long)vmf->virtual_address - vma->vm_start) >> PAGE_SHIFT) + compat_vm_pgoff(vma); // use vmf->pgoff?
 - if (pg >= vmLinux->sizeLocked) {
 - printk(KERN_DEBUG "vmmon: Something went wrong: entry %08lX out of range (>=%08X) for mapping on filp %p\n", pg, vmLinux->sizeLocked, vmLinux);
 - +#ifdef VMW_FAULT
 - + return VM_FAULT_SIGBUS;
 - +#else
 - return NOPAGE_SIGBUS;
 - +#endif
 - }
 - if (!vmLinux->vm || !vmLinux->vm->vmhost) {
 - printk(KERN_DEBUG "vmmon: Something went wrong: no vm or vmhost for mapping on filp %p\n", vmLinux);
 - +#ifdef VMW_FAULT
 - + return VM_FAULT_SIGBUS;
 - +#else
 - return NOPAGE_SIGBUS;
 - +#endif
 - }
 - pgt = vmLinux->pagesLocked->ent[pg / VMHOST_MAPPING_PT];
 - if (!pgt) {
 - printk(KERN_DEBUG "vmmon: Something went wrong: missing entry %08lX from mapping on filp %p\n", pg, vmLinux);
 - +#ifdef VMW_FAULT
 - + return VM_FAULT_SIGBUS;
 - +#else
 - return NOPAGE_SIGBUS;
 - +#endif
 - }
 - vmhe = kmap(pgt);
 - result = vmhe->ent[pg % VMHOST_MAPPING_PT];
 - kunmap(pgt);
 - if (!result) {
 - printk(KERN_DEBUG "vmmon: Something went wrong: attempt to access non-existing entry %08lX in mapping on filp %p\n", pg, vmLinux);
 - +#ifdef VMW_FAULT
 - + return VM_FAULT_SIGBUS;
 - +#else
 - return NOPAGE_SIGBUS;
 - +#endif
 - }
 - if (!PhysTrack_Test(vmLinux->vm->vmhost->AWEPages, page_to_pfn(result))) {
 - printk(KERN_DEBUG "vmmon: MPN %08lX not tracked! Someone released it before removing it from VA first!\n", pg);
 - +#ifdef VMW_FAULT
 - + return VM_FAULT_SIGBUS;
 - +#else
 - return NOPAGE_SIGBUS;
 - +#endif
 - }
 - get_page(result);
 - -#ifdef KERNEL_2_4_0
 - +#if defined(VMW_FAULT)
 - + vmf->page = result;
 - + return VM_FAULT_MAJOR;
 - +#elif defined(KERNEL_2_4_0)
 - #ifdef VMW_NOPAGE_261
 - *type = VM_FAULT_MINOR;
 - #endif
 - diff -ur vmware-server-kernel.orig/vmmon-only/Makefile.kernel vmware-server-kernel/vmmon-only/Makefile.kernel
 - --- vmware-server-kernel.orig/vmmon-only/Makefile.kernel 2008-09-21 16:46:30.000000000 +0200
 - +++ vmware-server-kernel/vmmon-only/Makefile.kernel 2008-09-21 16:55:08.000000000 +0200
 - @@@@ -13,6 +13,7 @@
 - EXTRA_CFLAGS := $(CC_OPTS) $(INCLUDE)
 - +EXTRA_CFLAGS += $(call vm_check_build, $(SRCROOT)/autoconf/fault.c, -DVMW_FAULT, )
 - EXTRA_CFLAGS += $(call vm_check_build, $(SRCROOT)/autoconf/nopage1.c, -DVMW_NOPAGE_261, )
 - EXTRA_CFLAGS += $(call vm_check_build, $(SRCROOT)/autoconf/skas1.c, -DVMW_SKAS_MMAP, )
 - EXTRA_CFLAGS += $(call vm_check_build, $(SRCROOT)/autoconf/epoll.c, -DVMW_HAVE_EPOLL, )
 - diff -ur vmware-server-kernel.orig/vmmon-only/Makefile.normal vmware-server-kernel/vmmon-only/Makefile.normal
 - --- vmware-server-kernel.orig/vmmon-only/Makefile.normal 2008-09-21 16:46:30.000000000 +0200
 - +++ vmware-server-kernel/vmmon-only/Makefile.normal 2008-09-21 16:55:07.000000000 +0200
 - @@@@ -60,6 +60,7 @@
 - INCLUDE += $(shell $(CC) $(INCLUDE) -E $(SRCROOT)/autoconf/geninclude.c \
 - | sed -n -e 's!^APATH!-I$(HEADER_DIR)/asm!p')
 - +CC_OPTS += $(call vm_check_build, $(SRCROOT)/autoconf/fault.c, -DVMW_FAULT, )
 - CC_OPTS += $(call vm_check_build, $(SRCROOT)/autoconf/nopage1.c, -DVMW_NOPAGE_261, )
 - CC_OPTS += $(call vm_check_build, $(SRCROOT)/autoconf/skas1.c, -DVMW_SKAS_MMAP, )
 - CC_OPTS += $(call vm_check_build, $(SRCROOT)/autoconf/epoll.c, -DVMW_HAVE_EPOLL, )
 - diff -ur vmware-server-kernel.orig/vmnet-only/bridge.c vmware-server-kernel/vmnet-only/bridge.c
 - --- vmware-server-kernel.orig/vmnet-only/bridge.c 2008-09-21 16:46:29.000000000 +0200
 - +++ vmware-server-kernel/vmnet-only/bridge.c 2008-09-21 17:31:47.000000000 +0200
 - @@@@ -274,7 +274,7 @@
 - struct net_device *net) // IN: Network device
 - {
 - #ifdef VMW_NETDEV_HAS_NET
 - - if (net->nd_net != bridge->internalDev->nd_net) {
 - + if (dev_net(net) != dev_net(bridge->internalDev)) {
 - return 0;
 - }
 - #endif
 - diff -ur vmware-server-kernel.orig/vmnet-only/procfs.c vmware-server-kernel/vmnet-only/procfs.c
 - --- vmware-server-kernel.orig/vmnet-only/procfs.c 2008-09-21 16:46:29.000000000 +0200
 - +++ vmware-server-kernel/vmnet-only/procfs.c 2008-09-21 17:35:53.000000000 +0200
 - @@@@ -63,7 +63,7 @@
 - {
 - int retval;
 - - retval = VNetProc_MakeEntry(&proc_root, "vmnet", S_IFDIR, &base);
 - + retval = VNetProc_MakeEntry(NULL, "vmnet", S_IFDIR, &base);
 - if (retval) {
 - return retval;
 - }
 - @@@@ -95,7 +95,7 @@
 - void
 - VNetProc_Cleanup(void)
 - {
 - - VNetProc_RemoveEntry(base, &proc_root);
 - + VNetProc_RemoveEntry(base, NULL);
 - base = NULL;
 - }
 - diff -ur vmware-server-kernel.orig/vmnet-only/vmnetInt.h vmware-server-kernel/vmnet-only/vmnetInt.h
 - --- vmware-server-kernel.orig/vmnet-only/vmnetInt.h 2008-09-21 16:46:29.000000000 +0200
 - +++ vmware-server-kernel/vmnet-only/vmnetInt.h 2008-09-21 17:30:33.000000000 +0200
 - @@@@ -63,7 +63,7 @@
 - # define dev_lock_list() read_lock(&dev_base_lock)
 - # define dev_unlock_list() read_unlock(&dev_base_lock)
 - # ifdef VMW_NETDEV_HAS_NET
 - -# define DEV_GET(x) __dev_get_by_name((x)->internalDev->nd_net, (x)->name)
 - +# define DEV_GET(x) __dev_get_by_name(dev_net((x)->internalDev), (x)->name)
 - # else
 - # define DEV_GET(x) __dev_get_by_name((x)->name)
 - # endif
 - @@@@ -89,7 +89,7 @@
 - #ifdef VMW_NETDEV_HAS_NET
 - extern struct proto vmnet_proto;
 - -# define compat_sk_alloc(_bri, _pri) sk_alloc((_bri)->internalDev->nd_net, \
 - +# define compat_sk_alloc(_bri, _pri) sk_alloc(dev_net((_bri)->internalDev), \
 - PF_NETLINK, _pri, &vmnet_proto)
 - #elif defined(VMW_HAVE_SK_ALLOC_WITH_PROTO)
 - extern struct proto vmnet_proto;
 
Advertisement
 
                    Add Comment                
                
                        Please, Sign In to add comment