summaryrefslogtreecommitdiff
blob: e2ab8a15f16b737cc879788377012890a62e93e5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
See https://bugs.gentoo.org/show_bug.cgi?id=559602
Patch by Mike Auty <ikelos@gentoo.org>

diff --git a/vmblock-only/linux/inode.c b/vmblock-only/linux/inode.c
index 4811abd..2cbc1f6 100644
--- a/vmblock-only/linux/inode.c
+++ b/vmblock-only/linux/inode.c
@@ -38,7 +38,9 @@
 static struct dentry *InodeOpLookup(struct inode *dir,
                                     struct dentry *dentry, unsigned int flags);
 static int InodeOpReadlink(struct dentry *dentry, char __user *buffer, int buflen);
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
+static const char *InodeOpFollowlink(struct dentry *dentry, void **cookie); 
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13)
 static void *InodeOpFollowlink(struct dentry *dentry, struct nameidata *nd);
 #else
 static int InodeOpFollowlink(struct dentry *dentry, struct nameidata *nd);
@@ -207,7 +209,12 @@ static void *
 static int
 #endif
 InodeOpFollowlink(struct dentry *dentry,  // IN : dentry of symlink
-                  struct nameidata *nd)   // OUT: stores result
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
+		  void **cookie
+#else
+		  struct nameidata *nd
+#endif
+		  )   // OUT: stores result
 {
    int ret;
    VMBlockInodeInfo *iinfo;
diff --git a/vmblock-only/linux/inode.c b/vmblock-only/linux/inode.c
index acb2803..4811abd 100644
--- a/vmblock-only/linux/inode.c
+++ b/vmblock-only/linux/inode.c
@@ -199,7 +199,9 @@ InodeOpReadlink(struct dentry *dentry,  // IN : dentry of symlink
  *----------------------------------------------------------------------------
  */
 
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
+static const char *
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13)
 static void *
 #else
 static int
@@ -222,8 +224,12 @@ InodeOpFollowlink(struct dentry *dentry,  // IN : dentry of symlink
       goto out;
    }
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
+   return *cookie = (char *)(iinfo->name);
+#else
    nd_set_link(nd, iinfo->name);
    ret = 0;
+#endif
 
 out:
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13)
diff --git a/vmnet-only/vmnetInt.h b/vmnet-only/vmnetInt.h
index 23b5d19..d129f7b 100644
--- a/vmnet-only/vmnetInt.h
+++ b/vmnet-only/vmnetInt.h
@@ -78,8 +78,13 @@
 
 extern struct proto vmnet_proto;
 #ifdef VMW_NETDEV_HAS_NET
+# if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)  
 #   define compat_sk_alloc(_bri, _pri) sk_alloc(&init_net, \
-                                                PF_NETLINK, _pri, &vmnet_proto)
+						PF_NETLINK, _pri, &vmnet_proto, 1)
+# else
+#   define compat_sk_alloc(_bri, _pri) sk_alloc(&init_net, \
+						PF_NETLINK, _pri, &vmnet_proto)
+# endif
 #else
 #   define compat_sk_alloc(_bri, _pri) sk_alloc(PF_NETLINK, _pri, &vmnet_proto, 1)
 #endif