]> git.pld-linux.org Git - packages/open-vm-tools.git/blame - open-vm-tools-linux-3.10.patch
- make kernel patch universal for all kernels
[packages/open-vm-tools.git] / open-vm-tools-linux-3.10.patch
CommitLineData
01d05bd9
JR
1diff --git a/modules/linux/dkms.conf b/modules/linux/dkms.conf
2index 3ed77f9..263921f 100644
3--- a/modules/linux/dkms.conf
4+++ b/modules/linux/dkms.conf
5@@ -1,39 +1,39 @@
6 PACKAGE_NAME=open-vm-tools
7 PACKAGE_VERSION=2013.04.16
8 MAKE_CMD_TMPL="make VM_UNAME=\$kernelver \
9- MODULEBUILDDIR=$dkms_tree/$PACKAGE_NAME/$PACKAGE_VERSION/build"
10+ MODULEBUILDDIR=$dkms_tree/$PACKAGE_NAME/$PACKAGE_VERSION/build \
11+ CC_WARNINGS=-Wno-unused-local-typedefs"
12
13 # The vsock module depends on symbols exported by the vmci module, so it
14 # needs to be built afterwards; the MODULEBUILDDIR variable tells the makefiles
15 # where to store / retrive those symbol files.
16 MAKE[0]="$MAKE_CMD_TMPL -C vmblock; \
17 $MAKE_CMD_TMPL -C vmci; \
18 $MAKE_CMD_TMPL -C vmhgfs; \
19 $MAKE_CMD_TMPL -C vmsync; \
20 $MAKE_CMD_TMPL -C vmxnet; \
21 $MAKE_CMD_TMPL -C vsock"
22 CLEAN[0]="$MAKE_CMD_TMPL -C vmblock clean; \
23 $MAKE_CMD_TMPL -C vmci clean; \
24 $MAKE_CMD_TMPL -C vmhgfs clean; \
25- $MAKE_CMD_TMPL -C vmsync clean"; \
26+ $MAKE_CMD_TMPL -C vmsync clean; \
27 $MAKE_CMD_TMPL -C vmxnet clean; \
28- $MAKE_CMD_TMPL -C vsock clean
29+ $MAKE_CMD_TMPL -C vsock clean"
30 BUILT_MODULE_NAME[0]="vmblock"
31 BUILT_MODULE_NAME[1]="vmci"
32-BUILT_MODULE_NAME[2]="vmhgfs"
33-BUILT_MODULE_NAME[3]="vmsync"
34-BUILT_MODULE_NAME[4]="vmxnet"
35-BUILT_MODULE_NAME[5]="vsock"
36+BUILT_MODULE_NAME[1]="vmhgfs"
37+BUILT_MODULE_NAME[2]="vmsync"
38+BUILT_MODULE_NAME[3]="vmxnet"
39+BUILT_MODULE_NAME[4]="vsock"
40 BUILT_MODULE_LOCATION[0]="vmblock/"
41 BUILT_MODULE_LOCATION[1]="vmci/"
42-BUILT_MODULE_LOCATION[2]="vmhgfs/"
43-BUILT_MODULE_LOCATION[3]="vmsync/"
44-BUILT_MODULE_LOCATION[4]="vmxnet/"
45-BUILT_MODULE_LOCATION[5]="vsock/"
46+BUILT_MODULE_LOCATION[1]="vmhgfs/"
47+BUILT_MODULE_LOCATION[2]="vmsync/"
48+BUILT_MODULE_LOCATION[3]="vmxnet/"
49+BUILT_MODULE_LOCATION[4]="vsock/"
50 DEST_MODULE_LOCATION[0]="/kernel/fs/vmblock"
51-DEST_MODULE_LOCATION[1]="/kernel/drivers/misc"
52-DEST_MODULE_LOCATION[2]="/kernel/fs/vmhgfs"
53-DEST_MODULE_LOCATION[3]="/kernel/drivers/misc"
54-DEST_MODULE_LOCATION[4]="/kernel/drivers/net"
55-DEST_MODULE_LOCATION[5]="/kernel/net/vsock"
56+DEST_MODULE_LOCATION[1]="/kernel/fs/vmhgfs"
57+DEST_MODULE_LOCATION[2]="/kernel/drivers/misc"
58+DEST_MODULE_LOCATION[3]="/kernel/drivers/net"
59+DEST_MODULE_LOCATION[4]="/kernel/net/vsock"
60 AUTOINSTALL="YES"
61diff --git a/modules/linux/vmblock/linux/control.c b/modules/linux/vmblock/linux/control.c
62index 79716bd..ee64cdc 100644
63--- a/modules/linux/vmblock/linux/control.c
64+++ b/modules/linux/vmblock/linux/control.c
0a51dd43
JR
65@@ -28,6 +28,7 @@
66 #include <linux/proc_fs.h>
67 #include <linux/stat.h>
68 #include <linux/fs.h>
69+#include <linux/version.h>
70
71 #include <asm/uaccess.h>
72
73@@ -208,9 +208,16 @@ SetupProcDevice(void)
01d05bd9
JR
74 VMBlockSetProcEntryOwner(controlProcMountpoint);
75
76 /* Create /proc/fs/vmblock/dev */
0a51dd43
JR
77+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
78 controlProcEntry = create_proc_entry(VMBLOCK_CONTROL_DEVNAME,
79 VMBLOCK_CONTROL_MODE,
80 controlProcDirEntry);
81+#else
01d05bd9
JR
82+ controlProcEntry = proc_create(VMBLOCK_CONTROL_DEVNAME,
83+ VMBLOCK_CONTROL_MODE,
84+ controlProcDirEntry,
85+ &ControlFileOps);
0a51dd43 86+#endif
01d05bd9
JR
87 if (!controlProcEntry) {
88 Warning("SetupProcDevice: could not create " VMBLOCK_DEVICE "\n");
89 remove_proc_entry(VMBLOCK_CONTROL_MOUNTPOINT, controlProcDirEntry);
0a51dd43 90@@ -218,7 +219,9 @@ SetupProcDevice(void)
01d05bd9
JR
91 return -EINVAL;
92 }
93
0a51dd43
JR
94+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
95 controlProcEntry->proc_fops = &ControlFileOps;
96+#endif
01d05bd9
JR
97 return 0;
98 }
99
0a51dd43 100@@ -278,7 +278,11 @@ ExecuteBlockOp(const char __user *buf, // IN: buffer with name
01d05bd9
JR
101 int (*blockOp)(const char *filename, // IN: block operation
102 const os_blocker_id_t blocker))
103 {
0a51dd43
JR
104+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)
105 char *name;
106+#else
01d05bd9 107+ struct filename *name;
0a51dd43 108+#endif
01d05bd9
JR
109 int i;
110 int retval;
111
0a51dd43 112@@ -287,13 +287,26 @@ ExecuteBlockOp(const char __user *buf, // IN: buffer with name
01d05bd9
JR
113 return PTR_ERR(name);
114 }
115
0a51dd43
JR
116+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)
117 for (i = strlen(name) - 1; i >= 0 && name[i] == '/'; i--) {
118 name[i] = '\0';
119+#else
01d05bd9
JR
120+ for (i = strlen(name->name) - 1; i >= 0 && name->name[i] == '/'; i--) {
121+ ((char *)name->name)[i] = '\0';
0a51dd43 122+#endif
01d05bd9
JR
123 }
124
0a51dd43
JR
125+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)
126 retval = i < 0 ? -EINVAL : blockOp(name, blocker);
127+#else
01d05bd9 128+ retval = i < 0 ? -EINVAL : blockOp(name->name, blocker);
0a51dd43 129+#endif
01d05bd9 130
0a51dd43
JR
131+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)
132 putname(name);
133+#else
01d05bd9 134+ __putname(name);
0a51dd43 135+#endif
01d05bd9
JR
136
137 return retval;
138 }
139diff --git a/modules/linux/vmblock/linux/dentry.c b/modules/linux/vmblock/linux/dentry.c
140index 05ea95a..d93b2f0 100644
141--- a/modules/linux/vmblock/linux/dentry.c
142+++ b/modules/linux/vmblock/linux/dentry.c
0a51dd43
JR
143@@ -26,6 +26,7 @@
144 #include "driver-config.h"
145
146 #include <linux/fs.h>
147+#include <linux/version.h>
148 #include "compat_namei.h"
149 #include "vmblockInt.h"
01d05bd9 150 #include "filesystem.h"
0a51dd43 151@@ -31,7 +31,11 @@
01d05bd9
JR
152 #include "block.h"
153
0a51dd43
JR
154
155+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)
156 static int DentryOpRevalidate(struct dentry *dentry, struct nameidata *nd);
157+#else
01d05bd9 158+static int DentryOpRevalidate(struct dentry *dentry, unsigned int flags);
0a51dd43 159+#endif
01d05bd9
JR
160
161 struct dentry_operations LinkDentryOps = {
162 .d_revalidate = DentryOpRevalidate,
0a51dd43 163@@ -60,7 +59,11 @@ struct dentry_operations LinkDentryOps = {
01d05bd9
JR
164
165 static int
166 DentryOpRevalidate(struct dentry *dentry, // IN: dentry revalidating
0a51dd43
JR
167+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)
168 struct nameidata *nd) // IN: lookup flags & intent
169+#else
01d05bd9 170+ unsigned int flags) // IN: lookup flags
0a51dd43 171+#endif
01d05bd9
JR
172 {
173 VMBlockInodeInfo *iinfo;
174 struct nameidata actualNd;
0a51dd43 175@@ -101,7 +100,11 @@ DentryOpRevalidate(struct dentry *dentry, // IN: dentry revalidating
01d05bd9
JR
176 if (actualDentry &&
177 actualDentry->d_op &&
178 actualDentry->d_op->d_revalidate) {
0a51dd43
JR
179+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)
180 return actualDentry->d_op->d_revalidate(actualDentry, nd);
181+#else
01d05bd9 182+ return actualDentry->d_op->d_revalidate(actualDentry, flags);
0a51dd43 183+#endif
01d05bd9
JR
184 }
185
186 if (compat_path_lookup(iinfo->name, 0, &actualNd)) {
187diff --git a/modules/linux/vmblock/linux/inode.c b/modules/linux/vmblock/linux/inode.c
188index 098c94c..ddd37f3 100644
189--- a/modules/linux/vmblock/linux/inode.c
190+++ b/modules/linux/vmblock/linux/inode.c
0a51dd43
JR
191@@ -28,6 +28,7 @@
192 #include <linux/fs.h>
193 #include <linux/time.h>
194 #include <linux/namei.h>
195+#include <linux/version.h>
196
197 #include "vmblockInt.h"
198 #include "filesystem.h"
199@@ -36,7 +36,11 @@
01d05bd9
JR
200
201 /* Inode operations */
202 static struct dentry *InodeOpLookup(struct inode *dir,
0a51dd43
JR
203+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)
204 struct dentry *dentry, struct nameidata *nd);
205+#else
01d05bd9 206+ struct dentry *dentry, unsigned int flags);
0a51dd43 207+#endif
01d05bd9
JR
208 static int InodeOpReadlink(struct dentry *dentry, char __user *buffer, int buflen);
209 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13)
210 static void *InodeOpFollowlink(struct dentry *dentry, struct nameidata *nd);
0a51dd43 211@@ -75,7 +75,11 @@ static struct inode_operations LinkInodeOps = {
01d05bd9
JR
212 static struct dentry *
213 InodeOpLookup(struct inode *dir, // IN: parent directory's inode
214 struct dentry *dentry, // IN: dentry to lookup
0a51dd43
JR
215+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)
216 struct nameidata *nd) // IN: lookup intent and information
217+#else
01d05bd9 218+ unsigned int flags) // IN: lookup flags
0a51dd43 219+#endif
01d05bd9
JR
220 {
221 char *filename;
222 struct inode *inode;
223diff --git a/modules/linux/vmhgfs/file.c b/modules/linux/vmhgfs/file.c
224index 1033984..db62070 100644
225--- a/modules/linux/vmhgfs/file.c
226+++ b/modules/linux/vmhgfs/file.c
0a51dd43 227@@ -25,9 +25,11 @@
01d05bd9
JR
228 /* Must come before any kernel header file. */
229 #include "driver-config.h"
230
231+#include <linux/aio.h>
232 #include <linux/errno.h>
233 #include <linux/module.h>
234 #include <linux/signal.h>
0a51dd43
JR
235+#include <linux/version.h>
236 #include "compat_cred.h"
237 #include "compat_fs.h"
238 #include "compat_kernel.h"
01d05bd9
JR
239diff --git a/modules/linux/vmsync/sync.c b/modules/linux/vmsync/sync.c
240index d05ccad..73baf8b 100644
241--- a/modules/linux/vmsync/sync.c
242+++ b/modules/linux/vmsync/sync.c
0a51dd43
JR
243@@ -43,6 +43,7 @@
244 #include <asm/string.h>
245 #include <linux/buffer_head.h>
246 #include <linux/proc_fs.h>
247+#include <linux/version.h>
248
249 #include "compat_fs.h"
250 #include "compat_module.h"
251@@ -162,7 +162,11 @@ VmSyncThawDevices(void *_state) // IN
01d05bd9
JR
252 cancel_delayed_work(&state->thawTask);
253 list_for_each_safe(cur, tmp, &state->devices) {
254 dev = list_entry(cur, VmSyncBlockDevice, list);
0a51dd43
JR
255+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)
256 if (dev->sb != NULL && dev->sb->s_frozen != SB_UNFROZEN) {
257+#else
01d05bd9 258+ if (dev->sb != NULL && dev->sb->s_writers.frozen != SB_UNFROZEN) {
0a51dd43 259+#endif
01d05bd9
JR
260 thaw_bdev(dev->bdev, dev->sb);
261 atomic_dec(&gFreezeCount);
262 }
0a51dd43 263@@ -237,7 +237,11 @@ VmSyncAddPath(const VmSyncState *state, // IN
01d05bd9
JR
264 * the superblock is already frozen.
265 */
266 if (inode->i_sb->s_bdev == NULL ||
0a51dd43
JR
267+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)
268 inode->i_sb->s_frozen != SB_UNFROZEN) {
269+#else
01d05bd9 270+ inode->i_sb->s_writers.frozen != SB_UNFROZEN) {
0a51dd43 271+#endif
01d05bd9
JR
272 result = (inode->i_sb->s_bdev == NULL) ? -EINVAL : -EALREADY;
273 compat_path_release(&nd);
274 goto exit;
0a51dd43 275@@ -303,7 +303,11 @@ VmSyncFreezeDevices(VmSyncState *state, // IN
01d05bd9
JR
276 const char __user *userPaths) // IN
277 {
278 int result = 0;
0a51dd43
JR
279+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)
280 char *paths;
281+#else
01d05bd9 282+ struct filename *paths;
0a51dd43 283+#endif
01d05bd9
JR
284 char *currPath;
285 char *nextSep;
286 struct list_head *cur, *tmp;
0a51dd43 287@@ -328,7 +328,12 @@ VmSyncFreezeDevices(VmSyncState *state, // IN
01d05bd9
JR
288 /*
289 * First, try to add all paths to the list of paths to be frozen.
290 */
0a51dd43
JR
291+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)
292 currPath = paths;
293+#else
01d05bd9
JR
294+ currPath = __getname();
295+ strcpy(currPath, paths->name);
0a51dd43 296+#endif
01d05bd9
JR
297 do {
298 nextSep = strchr(currPath, ':');
299 if (nextSep != NULL) {
0a51dd43 300@@ -347,6 +348,9 @@ VmSyncFreezeDevices(VmSyncState *state, // IN
01d05bd9
JR
301 }
302 currPath = nextSep + 1;
303 } while (nextSep != NULL);
0a51dd43 304+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0)
01d05bd9 305+ __putname(currPath);
0a51dd43 306+#endif
01d05bd9
JR
307
308 /*
309 * If adding all the requested paths worked, then freeze them.
0a51dd43 310@@ -371,6 +373,10 @@ VmSyncFreezeDevices(VmSyncState *state, // IN
01d05bd9
JR
311 compat_mutex_unlock(&state->lock);
312 compat_mutex_unlock(&gFreezeLock);
313
0a51dd43 314+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0)
01d05bd9 315+ __putname(paths);
0a51dd43 316+#endif
01d05bd9
JR
317+
318 if (result == 0) {
319 compat_schedule_delayed_work(&state->thawTask, VMSYNC_THAW_TASK_DELAY);
320 }
0a51dd43 321@@ -670,9 +674,16 @@ init_module(void)
01d05bd9
JR
322 }
323
324 /* Create /proc/driver/vmware-sync */
0a51dd43
JR
325+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)
326 controlProcEntry = create_proc_entry("driver/vmware-sync",
327 S_IFREG | S_IRUSR | S_IRGRP | S_IROTH,
328 NULL);
329+#else
01d05bd9
JR
330+ controlProcEntry = proc_create("driver/vmware-sync",
331+ S_IFREG | S_IRUSR | S_IRGRP | S_IROTH,
332+ NULL,
333+ &VmSyncFileOps);
0a51dd43 334+#endif
01d05bd9
JR
335 if (!controlProcEntry) {
336 printk(KERN_ERR "vmsync: could not create /proc/driver/vmware-sync\n");
337 kmem_cache_destroy(gSyncStateCache);
0a51dd43 338@@ -680,7 +685,9 @@ init_module(void)
01d05bd9
JR
339 return -EINVAL;
340 }
341
0a51dd43
JR
342+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)
343 controlProcEntry->proc_fops = &VmSyncFileOps;
344+#endif
01d05bd9
JR
345 return 0;
346 }
347
This page took 0.085389 seconds and 4 git commands to generate.