diff -urN work.orig//vmci-only/linux/driver.c work/vmci-only/linux/driver.c --- work.orig//vmci-only/linux/driver.c 2011-03-26 13:37:32.000000000 +0800 +++ work/vmci-only/linux/driver.c 2011-09-29 10:04:17.477234962 +0800 @@ -145,8 +145,20 @@ static int LinuxDriver_Close(struct inode *inode, struct file *filp); static unsigned int LinuxDriverPoll(struct file *file, poll_table *wait); -static struct file_operations vmuser_fops; - +static struct file_operations vmuser_fops = { + .owner = THIS_MODULE, + .poll = LinuxDriverPoll, +#ifdef HAVE_UNLOCKED_IOCTL + .unlocked_ioctl = LinuxDriver_UnlockedIoctl, +#else + .ioctl = LinuxDriver_Ioctl, +#endif +#ifdef HAVE_COMPAT_IOCTL + .compat_ioctl = LinuxDriver_UnlockedIoctl, +#endif + .open = LinuxDriver_Open, + .release = LinuxDriver_Close, +}; #ifdef VM_X86_64 #ifndef HAVE_COMPAT_IOCTL @@ -260,26 +272,6 @@ return -ENOMEM; } - /* - * Initialize the file_operations structure. Because this code is always - * compiled as a module, this is fine to do it here and not in a static - * initializer. - */ - - memset(&vmuser_fops, 0, sizeof vmuser_fops); - vmuser_fops.owner = THIS_MODULE; - vmuser_fops.poll = LinuxDriverPoll; -#ifdef HAVE_UNLOCKED_IOCTL - vmuser_fops.unlocked_ioctl = LinuxDriver_UnlockedIoctl; -#else - vmuser_fops.ioctl = LinuxDriver_Ioctl; -#endif -#ifdef HAVE_COMPAT_IOCTL - vmuser_fops.compat_ioctl = LinuxDriver_UnlockedIoctl; -#endif - vmuser_fops.open = LinuxDriver_Open; - vmuser_fops.release = LinuxDriver_Close; - sprintf(linuxState.deviceName, "vmci"); linuxState.major = 10; linuxState.misc.minor = MISC_DYNAMIC_MINOR; diff -urN work.orig//vmmon-only/linux/driver.c work/vmmon-only/linux/driver.c --- work.orig//vmmon-only/linux/driver.c 2011-03-26 13:37:28.000000000 +0800 +++ work/vmmon-only/linux/driver.c 2011-09-29 10:05:24.937235001 +0800 @@ -201,7 +201,22 @@ #endif }; -static struct file_operations vmuser_fops; +static struct file_operations vmuser_fops = { + .owner = THIS_MODULE, + .poll = LinuxDriverPoll, +#ifdef HAVE_UNLOCKED_IOCTL + .unlocked_ioctl = LinuxDriver_UnlockedIoctl, +#else + .ioctl = LinuxDriver_Ioctl, +#endif +#ifdef HAVE_COMPAT_IOCTL + .compat_ioctl = LinuxDriver_UnlockedIoctl, +#endif + .open = LinuxDriver_Open, + .release = LinuxDriver_Close, + .mmap = LinuxDriverMmap, +}; + static struct timer_list tscTimer; /* @@ -418,27 +433,6 @@ spin_lock_init(&linuxState.pollListLock); #endif - /* - * Initialize the file_operations structure. Because this code is always - * compiled as a module, this is fine to do it here and not in a static - * initializer. - */ - - memset(&vmuser_fops, 0, sizeof vmuser_fops); - vmuser_fops.owner = THIS_MODULE; - vmuser_fops.poll = LinuxDriverPoll; -#ifdef HAVE_UNLOCKED_IOCTL - vmuser_fops.unlocked_ioctl = LinuxDriver_UnlockedIoctl; -#else - vmuser_fops.ioctl = LinuxDriver_Ioctl; -#endif -#ifdef HAVE_COMPAT_IOCTL - vmuser_fops.compat_ioctl = LinuxDriver_UnlockedIoctl; -#endif - vmuser_fops.open = LinuxDriver_Open; - vmuser_fops.release = LinuxDriver_Close; - vmuser_fops.mmap = LinuxDriverMmap; - #ifdef VMX86_DEVEL devel_init_module(); linuxState.minor = 0; diff -urN work.orig//vmnet-only/driver.c work/vmnet-only/driver.c --- work.orig//vmnet-only/driver.c 2011-03-26 13:37:29.000000000 +0800 +++ work/vmnet-only/driver.c 2011-09-29 10:06:27.278234546 +0800 @@ -164,7 +164,22 @@ unsigned int iocmd, unsigned long ioarg); #endif -static struct file_operations vnetFileOps; +static struct file_operations vnetFileOps = { + .owner = THIS_MODULE, + .read = VNetFileOpRead, + .write = VNetFileOpWrite, + .poll = VNetFileOpPoll, +#ifdef HAVE_UNLOCKED_IOCTL + .unlocked_ioctl = VNetFileOpUnlockedIoctl, +#else + .ioctl = VNetFileOpIoctl, +#endif +#ifdef HAVE_COMPAT_IOCTL + .compat_ioctl = VNetFileOpUnlockedIoctl, +#endif + .open = VNetFileOpOpen, + .release = VNetFileOpClose, +}; /* * Utility functions @@ -476,28 +491,6 @@ goto err_proto; } - /* - * Initialize the file_operations structure. Because this code is always - * compiled as a module, this is fine to do it here and not in a static - * initializer. - */ - - memset(&vnetFileOps, 0, sizeof vnetFileOps); - vnetFileOps.owner = THIS_MODULE; - vnetFileOps.read = VNetFileOpRead; - vnetFileOps.write = VNetFileOpWrite; - vnetFileOps.poll = VNetFileOpPoll; -#ifdef HAVE_UNLOCKED_IOCTL - vnetFileOps.unlocked_ioctl = VNetFileOpUnlockedIoctl; -#else - vnetFileOps.ioctl = VNetFileOpIoctl; -#endif -#ifdef HAVE_COMPAT_IOCTL - vnetFileOps.compat_ioctl = VNetFileOpUnlockedIoctl; -#endif - vnetFileOps.open = VNetFileOpOpen; - vnetFileOps.release = VNetFileOpClose; - retval = register_chrdev(VNET_MAJOR_NUMBER, "vmnet", &vnetFileOps); if (retval) { LOG(0, (KERN_NOTICE "/dev/vmnet: could not register major device %d\n",