]>
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 | |
65 | @@ -208,9 +208,10 @@ SetupProcDevice(void) | |
66 | VMBlockSetProcEntryOwner(controlProcMountpoint); | |
67 | ||
68 | /* Create /proc/fs/vmblock/dev */ | |
69 | - controlProcEntry = create_proc_entry(VMBLOCK_CONTROL_DEVNAME, | |
70 | - VMBLOCK_CONTROL_MODE, | |
71 | - controlProcDirEntry); | |
72 | + controlProcEntry = proc_create(VMBLOCK_CONTROL_DEVNAME, | |
73 | + VMBLOCK_CONTROL_MODE, | |
74 | + controlProcDirEntry, | |
75 | + &ControlFileOps); | |
76 | if (!controlProcEntry) { | |
77 | Warning("SetupProcDevice: could not create " VMBLOCK_DEVICE "\n"); | |
78 | remove_proc_entry(VMBLOCK_CONTROL_MOUNTPOINT, controlProcDirEntry); | |
79 | @@ -218,7 +219,6 @@ SetupProcDevice(void) | |
80 | return -EINVAL; | |
81 | } | |
82 | ||
83 | - controlProcEntry->proc_fops = &ControlFileOps; | |
84 | return 0; | |
85 | } | |
86 | ||
87 | @@ -278,7 +278,7 @@ ExecuteBlockOp(const char __user *buf, // IN: buffer with name | |
88 | int (*blockOp)(const char *filename, // IN: block operation | |
89 | const os_blocker_id_t blocker)) | |
90 | { | |
91 | - char *name; | |
92 | + struct filename *name; | |
93 | int i; | |
94 | int retval; | |
95 | ||
96 | @@ -287,13 +287,13 @@ ExecuteBlockOp(const char __user *buf, // IN: buffer with name | |
97 | return PTR_ERR(name); | |
98 | } | |
99 | ||
100 | - for (i = strlen(name) - 1; i >= 0 && name[i] == '/'; i--) { | |
101 | - name[i] = '\0'; | |
102 | + for (i = strlen(name->name) - 1; i >= 0 && name->name[i] == '/'; i--) { | |
103 | + ((char *)name->name)[i] = '\0'; | |
104 | } | |
105 | ||
106 | - retval = i < 0 ? -EINVAL : blockOp(name, blocker); | |
107 | + retval = i < 0 ? -EINVAL : blockOp(name->name, blocker); | |
108 | ||
109 | - putname(name); | |
110 | + __putname(name); | |
111 | ||
112 | return retval; | |
113 | } | |
114 | diff --git a/modules/linux/vmblock/linux/dentry.c b/modules/linux/vmblock/linux/dentry.c | |
115 | index 05ea95a..d93b2f0 100644 | |
116 | --- a/modules/linux/vmblock/linux/dentry.c | |
117 | +++ b/modules/linux/vmblock/linux/dentry.c | |
118 | @@ -31,8 +31,7 @@ | |
119 | #include "filesystem.h" | |
120 | #include "block.h" | |
121 | ||
122 | - | |
123 | -static int DentryOpRevalidate(struct dentry *dentry, struct nameidata *nd); | |
124 | +static int DentryOpRevalidate(struct dentry *dentry, unsigned int flags); | |
125 | ||
126 | struct dentry_operations LinkDentryOps = { | |
127 | .d_revalidate = DentryOpRevalidate, | |
128 | @@ -60,7 +59,7 @@ struct dentry_operations LinkDentryOps = { | |
129 | ||
130 | static int | |
131 | DentryOpRevalidate(struct dentry *dentry, // IN: dentry revalidating | |
132 | - struct nameidata *nd) // IN: lookup flags & intent | |
133 | + unsigned int flags) // IN: lookup flags | |
134 | { | |
135 | VMBlockInodeInfo *iinfo; | |
136 | struct nameidata actualNd; | |
137 | @@ -101,7 +100,7 @@ DentryOpRevalidate(struct dentry *dentry, // IN: dentry revalidating | |
138 | if (actualDentry && | |
139 | actualDentry->d_op && | |
140 | actualDentry->d_op->d_revalidate) { | |
141 | - return actualDentry->d_op->d_revalidate(actualDentry, nd); | |
142 | + return actualDentry->d_op->d_revalidate(actualDentry, flags); | |
143 | } | |
144 | ||
145 | if (compat_path_lookup(iinfo->name, 0, &actualNd)) { | |
146 | diff --git a/modules/linux/vmblock/linux/inode.c b/modules/linux/vmblock/linux/inode.c | |
147 | index 098c94c..ddd37f3 100644 | |
148 | --- a/modules/linux/vmblock/linux/inode.c | |
149 | +++ b/modules/linux/vmblock/linux/inode.c | |
150 | @@ -36,7 +36,7 @@ | |
151 | ||
152 | /* Inode operations */ | |
153 | static struct dentry *InodeOpLookup(struct inode *dir, | |
154 | - struct dentry *dentry, struct nameidata *nd); | |
155 | + struct dentry *dentry, unsigned int flags); | |
156 | static int InodeOpReadlink(struct dentry *dentry, char __user *buffer, int buflen); | |
157 | #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) | |
158 | static void *InodeOpFollowlink(struct dentry *dentry, struct nameidata *nd); | |
159 | @@ -75,7 +75,7 @@ static struct inode_operations LinkInodeOps = { | |
160 | static struct dentry * | |
161 | InodeOpLookup(struct inode *dir, // IN: parent directory's inode | |
162 | struct dentry *dentry, // IN: dentry to lookup | |
163 | - struct nameidata *nd) // IN: lookup intent and information | |
164 | + unsigned int flags) // IN: lookup flags | |
165 | { | |
166 | char *filename; | |
167 | struct inode *inode; | |
168 | diff --git a/modules/linux/vmhgfs/file.c b/modules/linux/vmhgfs/file.c | |
169 | index 1033984..db62070 100644 | |
170 | --- a/modules/linux/vmhgfs/file.c | |
171 | +++ b/modules/linux/vmhgfs/file.c | |
172 | @@ -25,6 +25,7 @@ | |
173 | /* Must come before any kernel header file. */ | |
174 | #include "driver-config.h" | |
175 | ||
176 | +#include <linux/aio.h> | |
177 | #include <linux/errno.h> | |
178 | #include <linux/module.h> | |
179 | #include <linux/signal.h> | |
180 | diff --git a/modules/linux/vmsync/sync.c b/modules/linux/vmsync/sync.c | |
181 | index d05ccad..73baf8b 100644 | |
182 | --- a/modules/linux/vmsync/sync.c | |
183 | +++ b/modules/linux/vmsync/sync.c | |
184 | @@ -162,7 +162,7 @@ VmSyncThawDevices(void *_state) // IN | |
185 | cancel_delayed_work(&state->thawTask); | |
186 | list_for_each_safe(cur, tmp, &state->devices) { | |
187 | dev = list_entry(cur, VmSyncBlockDevice, list); | |
188 | - if (dev->sb != NULL && dev->sb->s_frozen != SB_UNFROZEN) { | |
189 | + if (dev->sb != NULL && dev->sb->s_writers.frozen != SB_UNFROZEN) { | |
190 | thaw_bdev(dev->bdev, dev->sb); | |
191 | atomic_dec(&gFreezeCount); | |
192 | } | |
193 | @@ -237,7 +237,7 @@ VmSyncAddPath(const VmSyncState *state, // IN | |
194 | * the superblock is already frozen. | |
195 | */ | |
196 | if (inode->i_sb->s_bdev == NULL || | |
197 | - inode->i_sb->s_frozen != SB_UNFROZEN) { | |
198 | + inode->i_sb->s_writers.frozen != SB_UNFROZEN) { | |
199 | result = (inode->i_sb->s_bdev == NULL) ? -EINVAL : -EALREADY; | |
200 | compat_path_release(&nd); | |
201 | goto exit; | |
202 | @@ -303,7 +303,7 @@ VmSyncFreezeDevices(VmSyncState *state, // IN | |
203 | const char __user *userPaths) // IN | |
204 | { | |
205 | int result = 0; | |
206 | - char *paths; | |
207 | + struct filename *paths; | |
208 | char *currPath; | |
209 | char *nextSep; | |
210 | struct list_head *cur, *tmp; | |
211 | @@ -328,7 +328,8 @@ VmSyncFreezeDevices(VmSyncState *state, // IN | |
212 | /* | |
213 | * First, try to add all paths to the list of paths to be frozen. | |
214 | */ | |
215 | - currPath = paths; | |
216 | + currPath = __getname(); | |
217 | + strcpy(currPath, paths->name); | |
218 | do { | |
219 | nextSep = strchr(currPath, ':'); | |
220 | if (nextSep != NULL) { | |
221 | @@ -347,6 +348,7 @@ VmSyncFreezeDevices(VmSyncState *state, // IN | |
222 | } | |
223 | currPath = nextSep + 1; | |
224 | } while (nextSep != NULL); | |
225 | + __putname(currPath); | |
226 | ||
227 | /* | |
228 | * If adding all the requested paths worked, then freeze them. | |
229 | @@ -371,6 +373,8 @@ VmSyncFreezeDevices(VmSyncState *state, // IN | |
230 | compat_mutex_unlock(&state->lock); | |
231 | compat_mutex_unlock(&gFreezeLock); | |
232 | ||
233 | + __putname(paths); | |
234 | + | |
235 | if (result == 0) { | |
236 | compat_schedule_delayed_work(&state->thawTask, VMSYNC_THAW_TASK_DELAY); | |
237 | } | |
238 | @@ -670,9 +674,10 @@ init_module(void) | |
239 | } | |
240 | ||
241 | /* Create /proc/driver/vmware-sync */ | |
242 | - controlProcEntry = create_proc_entry("driver/vmware-sync", | |
243 | - S_IFREG | S_IRUSR | S_IRGRP | S_IROTH, | |
244 | - NULL); | |
245 | + controlProcEntry = proc_create("driver/vmware-sync", | |
246 | + S_IFREG | S_IRUSR | S_IRGRP | S_IROTH, | |
247 | + NULL, | |
248 | + &VmSyncFileOps); | |
249 | if (!controlProcEntry) { | |
250 | printk(KERN_ERR "vmsync: could not create /proc/driver/vmware-sync\n"); | |
251 | kmem_cache_destroy(gSyncStateCache); | |
252 | @@ -680,7 +685,6 @@ init_module(void) | |
253 | return -EINVAL; | |
254 | } | |
255 | ||
256 | - controlProcEntry->proc_fops = &VmSyncFileOps; | |
257 | return 0; | |
258 | } | |
259 |