]>
Commit | Line | Data |
---|---|---|
01d05bd9 JR |
1 | diff --git a/modules/linux/dkms.conf b/modules/linux/dkms.conf |
2 | index 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" | |
61 | diff --git a/modules/linux/vmblock/linux/control.c b/modules/linux/vmblock/linux/control.c | |
62 | index 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 | } | |
139 | diff --git a/modules/linux/vmblock/linux/dentry.c b/modules/linux/vmblock/linux/dentry.c | |
140 | index 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)) { | |
187 | diff --git a/modules/linux/vmblock/linux/inode.c b/modules/linux/vmblock/linux/inode.c | |
188 | index 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; | |
223 | diff --git a/modules/linux/vmhgfs/file.c b/modules/linux/vmhgfs/file.c | |
224 | index 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 |
239 | diff --git a/modules/linux/vmsync/sync.c b/modules/linux/vmsync/sync.c |
240 | index 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 |