171 lines
4.9 KiB
Diff
171 lines
4.9 KiB
Diff
diff --git a/vmci-only/linux/driver.c b/vmci-only/linux/driver.c
|
|
index 921f25c..41a39e3 100644
|
|
--- a/vmci-only/linux/driver.c
|
|
+++ b/vmci-only/linux/driver.c
|
|
@@ -241,7 +241,24 @@ static unsigned int LinuxDriverPoll(struct file *file, poll_table *wait);
|
|
#define LinuxDriverUnlockIoctlPerFD(mutex) do {} while (0)
|
|
#endif
|
|
|
|
-static struct file_operations vmuser_fops;
|
|
+/*
|
|
+ * Moved file operations initialize here because of incompatibilites
|
|
+ * with Gentoo hardened profile/hardend Linux 3.
|
|
+ */
|
|
+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
|
|
+};
|
|
|
|
|
|
/*
|
|
@@ -378,26 +395,6 @@ vmci_host_init(void)
|
|
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 --git a/vmmon-only/linux/driver.c b/vmmon-only/linux/driver.c
|
|
index b21dd44..960c2aa 100644
|
|
--- a/vmmon-only/linux/driver.c
|
|
+++ b/vmmon-only/linux/driver.c
|
|
@@ -178,7 +178,22 @@ static struct vm_operations_struct vmuser_mops = {
|
|
#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;
|
|
|
|
/*
|
|
@@ -357,27 +372,6 @@ init_module(void)
|
|
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 --git a/vmnet-only/driver.c b/vmnet-only/driver.c
|
|
index b12b982..40bd4cf 100644
|
|
--- a/vmnet-only/driver.c
|
|
+++ b/vmnet-only/driver.c
|
|
@@ -165,7 +165,22 @@ static long VNetFileOpUnlockedIoctl(struct file * filp,
|
|
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 @@ init_module(void)
|
|
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",
|