]> git.pld-linux.org Git - packages/open-vm-tools.git/blob - open-vm-tools-linux-3.10.patch
- fix building with linux 3.10.76
[packages/open-vm-tools.git] / open-vm-tools-linux-3.10.patch
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 @@ -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)
74     VMBlockSetProcEntryOwner(controlProcMountpoint);
75  
76     /* Create /proc/fs/vmblock/dev */
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
82 +   controlProcEntry = proc_create(VMBLOCK_CONTROL_DEVNAME,
83 +                                  VMBLOCK_CONTROL_MODE,
84 +                                  controlProcDirEntry,
85 +                                  &ControlFileOps);
86 +#endif
87     if (!controlProcEntry) {
88        Warning("SetupProcDevice: could not create " VMBLOCK_DEVICE "\n");
89        remove_proc_entry(VMBLOCK_CONTROL_MOUNTPOINT, controlProcDirEntry);
90 @@ -218,7 +219,9 @@ SetupProcDevice(void)
91        return -EINVAL;
92     }
93  
94 +#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
95     controlProcEntry->proc_fops = &ControlFileOps;
96 +#endif
97     return 0;
98  }
99  
100 @@ -278,7 +278,11 @@ ExecuteBlockOp(const char __user *buf,                // IN: buffer with name
101                 int (*blockOp)(const char *filename,   // IN: block operation
102                                const os_blocker_id_t blocker))
103  {
104 +#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)
105     char *name;
106 +#else
107 +   struct filename *name;
108 +#endif
109     int i;
110     int retval;
111  
112 @@ -287,13 +287,26 @@ ExecuteBlockOp(const char __user *buf,                // IN: buffer with name
113        return PTR_ERR(name);
114     }
115  
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
120 +   for (i = strlen(name->name) - 1; i >= 0 && name->name[i] == '/'; i--) {
121 +      ((char *)name->name)[i] = '\0';
122 +#endif
123     }
124  
125 +#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)
126     retval = i < 0 ? -EINVAL : blockOp(name, blocker);
127 +#else
128 +   retval = i < 0 ? -EINVAL : blockOp(name->name, blocker);
129 +#endif
130  
131 +#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)
132     putname(name);
133 +#else
134 +   __putname(name);
135 +#endif
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
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"
150  #include "filesystem.h"
151 @@ -31,7 +31,11 @@
152  #include "block.h"
153  
154  
155 +#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)
156  static int DentryOpRevalidate(struct dentry *dentry, struct nameidata *nd);
157 +#else
158 +static int DentryOpRevalidate(struct dentry *dentry, unsigned int flags);
159 +#endif
160  
161  struct dentry_operations LinkDentryOps = {
162     .d_revalidate = DentryOpRevalidate,
163 @@ -60,7 +59,11 @@ struct dentry_operations LinkDentryOps = {
164  
165  static int
166  DentryOpRevalidate(struct dentry *dentry,  // IN: dentry revalidating
167 +#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)
168                     struct nameidata *nd)   // IN: lookup flags & intent
169 +#else
170 +                   unsigned int flags)     // IN: lookup flags
171 +#endif
172  {
173     VMBlockInodeInfo *iinfo;
174     struct nameidata actualNd;
175 @@ -101,7 +100,11 @@ DentryOpRevalidate(struct dentry *dentry,  // IN: dentry revalidating
176     if (actualDentry &&
177         actualDentry->d_op &&
178         actualDentry->d_op->d_revalidate) {
179 +#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)
180        return actualDentry->d_op->d_revalidate(actualDentry, nd);
181 +#else
182 +      return actualDentry->d_op->d_revalidate(actualDentry, flags);
183 +#endif
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
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 @@
200  
201  /* Inode operations */
202  static struct dentry *InodeOpLookup(struct inode *dir,
203 +#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)
204                                      struct dentry *dentry, struct nameidata *nd);
205 +#else
206 +                                    struct dentry *dentry, unsigned int flags);
207 +#endif
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);
211 @@ -75,7 +75,11 @@ static struct inode_operations LinkInodeOps = {
212  static struct dentry *
213  InodeOpLookup(struct inode *dir,      // IN: parent directory's inode
214                struct dentry *dentry,  // IN: dentry to lookup
215 +#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)
216                struct nameidata *nd)   // IN: lookup intent and information
217 +#else
218 +              unsigned int flags)     // IN: lookup flags
219 +#endif
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
227 @@ -25,9 +25,11 @@
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>
235 +#include <linux/version.h>
236  #include "compat_cred.h"
237  #include "compat_fs.h"
238  #include "compat_kernel.h"
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
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
252     cancel_delayed_work(&state->thawTask);
253     list_for_each_safe(cur, tmp, &state->devices) {
254        dev = list_entry(cur, VmSyncBlockDevice, list);
255 +#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)
256        if (dev->sb != NULL && dev->sb->s_frozen != SB_UNFROZEN) {
257 +#else
258 +      if (dev->sb != NULL && dev->sb->s_writers.frozen != SB_UNFROZEN) {
259 +#endif
260           thaw_bdev(dev->bdev, dev->sb);
261           atomic_dec(&gFreezeCount);
262        }
263 @@ -237,7 +237,11 @@ VmSyncAddPath(const VmSyncState *state,   // IN
264      * the superblock is already frozen.
265      */
266     if (inode->i_sb->s_bdev == NULL ||
267 +#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)
268         inode->i_sb->s_frozen != SB_UNFROZEN) {
269 +#else
270 +       inode->i_sb->s_writers.frozen != SB_UNFROZEN) {
271 +#endif
272        result = (inode->i_sb->s_bdev == NULL) ? -EINVAL : -EALREADY;
273        compat_path_release(&nd);
274        goto exit;
275 @@ -303,7 +303,11 @@ VmSyncFreezeDevices(VmSyncState *state,            // IN
276                      const char __user *userPaths)  // IN
277  {
278     int result = 0;
279 +#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)
280     char *paths;
281 +#else
282 +   struct filename *paths;
283 +#endif
284     char *currPath;
285     char *nextSep;
286     struct list_head *cur, *tmp;
287 @@ -328,7 +328,12 @@ VmSyncFreezeDevices(VmSyncState *state,            // IN
288     /*
289      * First, try to add all paths to the list of paths to be frozen.
290      */
291 +#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)
292     currPath = paths;
293 +#else
294 +   currPath = __getname();
295 +   strcpy(currPath, paths->name);
296 +#endif
297     do {
298        nextSep = strchr(currPath, ':');
299        if (nextSep != NULL) {
300 @@ -347,6 +348,9 @@ VmSyncFreezeDevices(VmSyncState *state,            // IN
301        }
302        currPath = nextSep + 1;
303     } while (nextSep != NULL);
304 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0)
305 +   __putname(currPath);
306 +#endif
307  
308     /*
309      * If adding all the requested paths worked, then freeze them.
310 @@ -371,6 +373,10 @@ VmSyncFreezeDevices(VmSyncState *state,            // IN
311     compat_mutex_unlock(&state->lock);
312     compat_mutex_unlock(&gFreezeLock);
313  
314 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0)
315 +   __putname(paths);
316 +#endif
317 +
318     if (result == 0) {
319        compat_schedule_delayed_work(&state->thawTask, VMSYNC_THAW_TASK_DELAY);
320     }
321 @@ -670,9 +674,16 @@ init_module(void)
322     }
323  
324     /* Create /proc/driver/vmware-sync */
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
330 +   controlProcEntry = proc_create("driver/vmware-sync",
331 +                                  S_IFREG | S_IRUSR | S_IRGRP | S_IROTH,
332 +                                  NULL,
333 +                                  &VmSyncFileOps);
334 +#endif
335     if (!controlProcEntry) {
336        printk(KERN_ERR "vmsync: could not create /proc/driver/vmware-sync\n");
337        kmem_cache_destroy(gSyncStateCache);
338 @@ -680,7 +685,9 @@ init_module(void)
339        return -EINVAL;
340     }
341  
342 +#if LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)
343     controlProcEntry->proc_fops = &VmSyncFileOps;
344 +#endif
345     return 0;
346  }
347  
This page took 0.051983 seconds and 3 git commands to generate.