floppym     15/05/10 14:31:14

  Added:               
                        
9.10.0-0002-Fix-d_alias-to-d_u.d_alias-for-kernel-3.18.patch
                        9.10.0-0001-Fix-vmxnet-module-on-kernels-3.16.patch
                        9.10.0-0003-Fix-f_dentry-msghdr-kernel-3.19.patch
  Log:
  Version bump. Resolves bug 507026.
  
  (Portage version: 2.2.18/cvs/Linux x86_64, signed Manifest commit with key 
0BBEEA1FEA4843A4)

Revision  Changes    Path
1.1                  
app-emulation/open-vm-tools-kmod/files/9.10.0-0002-Fix-d_alias-to-d_u.d_alias-for-kernel-3.18.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/app-emulation/open-vm-tools-kmod/files/9.10.0-0002-Fix-d_alias-to-d_u.d_alias-for-kernel-3.18.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/app-emulation/open-vm-tools-kmod/files/9.10.0-0002-Fix-d_alias-to-d_u.d_alias-for-kernel-3.18.patch?rev=1.1&content-type=text/plain

Index: 9.10.0-0002-Fix-d_alias-to-d_u.d_alias-for-kernel-3.18.patch
===================================================================
>From 8df98f3c779fa43d073a42e82bd18cf28c2bd4af Mon Sep 17 00:00:00 2001
From: Wendell Smith <wendellwsm...@gmail.com>
Date: Sat, 7 Feb 2015 15:42:13 -0500
Subject: [PATCH 2/3] Fix d_alias to d_u.d_alias for kernel 3.18

---
 open-vm-tools/modules/linux/vmhgfs/inode.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/open-vm-tools/modules/linux/vmhgfs/inode.c 
b/open-vm-tools/modules/linux/vmhgfs/inode.c
index 77b1669..2d289e3 100644
--- a/open-vm-tools/modules/linux/vmhgfs/inode.c
+++ b/open-vm-tools/modules/linux/vmhgfs/inode.c
@@ -1917,7 +1917,7 @@ HgfsPermission(struct inode *inode,
                            p,
 #endif
                            &inode->i_dentry,
-                           d_alias) {
+                           d_u.d_alias) {
          int dcount = hgfs_d_count(dentry);
          if (dcount) {
             LOG(4, ("Found %s %d \n", dentry->d_name.name, dcount));
@@ -1970,7 +1970,7 @@ HgfsPermission(struct inode *inode,
       /* Find a dentry with valid d_count. Refer bug 587879. */
       list_for_each(pos, &inode->i_dentry) {
          int dcount;
-         struct dentry *dentry = list_entry(pos, struct dentry, d_alias);
+         struct dentry *dentry = list_entry(pos, struct dentry, d_u.d_alias);
          dcount = hgfs_d_count(dentry);
          if (dcount) {
             LOG(4, ("Found %s %d \n", (dentry)->d_name.name, dcount));
-- 
2.3.4




1.1                  
app-emulation/open-vm-tools-kmod/files/9.10.0-0001-Fix-vmxnet-module-on-kernels-3.16.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/app-emulation/open-vm-tools-kmod/files/9.10.0-0001-Fix-vmxnet-module-on-kernels-3.16.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/app-emulation/open-vm-tools-kmod/files/9.10.0-0001-Fix-vmxnet-module-on-kernels-3.16.patch?rev=1.1&content-type=text/plain

Index: 9.10.0-0001-Fix-vmxnet-module-on-kernels-3.16.patch
===================================================================
>From 08836a47c56b47b658025e41a20027c5d915f836 Mon Sep 17 00:00:00 2001
From: "Scott M. Kroll" <skr...@gmail.com>
Date: Fri, 15 Aug 2014 10:40:38 -0400
Subject: [PATCH 1/3] Fix vmxnet module on kernels >= 3.16

* Add compat check for ethtool_ops in net_device struct.
* SET_ETHTOOL_OPS is no longer defined, but can be manually.
---
 open-vm-tools/modules/linux/shared/compat_netdevice.h |  4 ++++
 open-vm-tools/modules/linux/vmxnet/vmxnet.c           | 13 ++++++++-----
 2 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/open-vm-tools/modules/linux/shared/compat_netdevice.h 
b/open-vm-tools/modules/linux/shared/compat_netdevice.h
index 3aec25b..a65d59b 100644
--- a/open-vm-tools/modules/linux/shared/compat_netdevice.h
+++ b/open-vm-tools/modules/linux/shared/compat_netdevice.h
@@ -337,4 +337,8 @@ typedef netdev_features_t compat_netdev_features_t;
 typedef u32 compat_netdev_features_t;
 #endif
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 16, 0) || defined(SET_ETHTOOL_OPS)
+#define VMW_HAVE_ETHTOOL_OPS 1
+#endif
+
 #endif /* __COMPAT_NETDEVICE_H__ */
diff --git a/open-vm-tools/modules/linux/vmxnet/vmxnet.c 
b/open-vm-tools/modules/linux/vmxnet/vmxnet.c
index 33afb9b..40abde5 100644
--- a/open-vm-tools/modules/linux/vmxnet/vmxnet.c
+++ b/open-vm-tools/modules/linux/vmxnet/vmxnet.c
@@ -279,8 +279,7 @@ vmxnet_change_mtu(struct net_device *dev, int new_mtu)
 
 #endif
 
-
-#ifdef SET_ETHTOOL_OPS
+#ifdef VMW_HAVE_ETHTOOL_OPS
 /*
  *----------------------------------------------------------------------------
  *
@@ -526,7 +525,7 @@ vmxnet_ethtool_ops = {
 };
 
 
-#else   /* !defined(SET_ETHTOOL_OPS) */
+#else   /* !defined(VMW_HAVE_ETHTOOL_OPS) */
 
 
 /*
@@ -739,7 +738,7 @@ vmxnet_ioctl(struct net_device *dev, struct ifreq *ifr, int 
cmd)
    }
    return -EOPNOTSUPP;
 }
-#endif /* SET_ETHTOOL_OPS */
+#endif /* !defined(VMW_HAVE_ETHTOOL_OPS) */
 
 
 /*
@@ -1142,8 +1141,12 @@ vmxnet_probe_device(struct pci_dev             *pdev, // 
IN: vmxnet PCI device
    dev->watchdog_timeo = VMXNET_WATCHDOG_TIMEOUT;
 #endif
 
-#ifdef SET_ETHTOOL_OPS
+#ifdef VMW_HAVE_ETHTOOL_OPS
+#  ifdef SET_ETHTOOL_OPS
    SET_ETHTOOL_OPS(dev, &vmxnet_ethtool_ops);
+#  else
+   dev->ethtool_ops = &vmxnet_ethtool_ops;
+#  endif
 #else
    dev->do_ioctl = vmxnet_ioctl;
 #endif
-- 
2.3.4




1.1                  
app-emulation/open-vm-tools-kmod/files/9.10.0-0003-Fix-f_dentry-msghdr-kernel-3.19.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/app-emulation/open-vm-tools-kmod/files/9.10.0-0003-Fix-f_dentry-msghdr-kernel-3.19.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/app-emulation/open-vm-tools-kmod/files/9.10.0-0003-Fix-f_dentry-msghdr-kernel-3.19.patch?rev=1.1&content-type=text/plain

Index: 9.10.0-0003-Fix-f_dentry-msghdr-kernel-3.19.patch
===================================================================
>From 61751db8cd4679fc76034a5d1f99df6c64c48de6 Mon Sep 17 00:00:00 2001
From: lotan <lo...@gmx.de>
Date: Mon, 30 Mar 2015 08:58:56 +0200
Subject: [PATCH 3/3] Make vmhgfs work on kernel 3.19.

---
 open-vm-tools/modules/linux/vmhgfs/dir.c           | 35 ++++++------
 open-vm-tools/modules/linux/vmhgfs/file.c          | 65 +++++++++++-----------
 open-vm-tools/modules/linux/vmhgfs/fsutil.c        |  3 +-
 .../modules/linux/vmhgfs/shared/compat_dentry.h    | 10 ++++
 4 files changed, 63 insertions(+), 50 deletions(-)
 create mode 100644 open-vm-tools/modules/linux/vmhgfs/shared/compat_dentry.h

diff --git a/open-vm-tools/modules/linux/vmhgfs/dir.c 
b/open-vm-tools/modules/linux/vmhgfs/dir.c
index 809611a..c6a87bd 100644
--- a/open-vm-tools/modules/linux/vmhgfs/dir.c
+++ b/open-vm-tools/modules/linux/vmhgfs/dir.c
@@ -31,6 +31,7 @@
 #include "compat_kernel.h"
 #include "compat_slab.h"
 #include "compat_mutex.h"
+#include "compat_dentry.h"
 
 #include "cpName.h"
 #include "hgfsEscape.h"
@@ -414,7 +415,7 @@ HgfsPackDirOpenRequest(struct file *file,   // IN: File 
pointer for this open
 
    /* Build full name to send to server. */
    if (HgfsBuildPath(name, req->bufferSize - (requestSize - 1),
-                     file->f_dentry) < 0) {
+                     DENTRY(file)) < 0) {
       LOG(4, (KERN_DEBUG "VMware hgfs: HgfsPackDirOpenRequest: build path 
failed\n"));
       return -EINVAL;
    }
@@ -560,8 +561,8 @@ HgfsPrivateDirRelease(struct file *file,   // IN: File for 
the dir getting relea
    int result = 0;
 
    ASSERT(file);
-   ASSERT(file->f_dentry);
-   ASSERT(file->f_dentry->d_sb);
+   ASSERT(DENTRY(file));
+   ASSERT(DENTRY(file)->d_sb);
 
    LOG(6, (KERN_DEBUG "VMware hgfs: HgfsPrivateDirRelease: close fh %u\n", 
handle));
 
@@ -704,7 +705,7 @@ HgfsDirLlseek(struct file *file,
               loff_t offset,
               int origin)
 {
-   struct dentry *dentry = file->f_dentry;
+   struct dentry *dentry = DENTRY(file);
    struct inode *inode = dentry->d_inode;
    compat_mutex_t *mtx;
 
@@ -853,7 +854,7 @@ HgfsReaddirRefreshEntries(struct file *file)    // IN: File 
pointer for this ope
    }
 
    LOG(6, (KERN_DEBUG "VMware hgfs: %s: error: stale handle (%s) return %d)\n",
-            __func__, file->f_dentry->d_name.name, result));
+            __func__, DENTRY(file)->d_name.name, result));
    return result;
 }
 
@@ -988,9 +989,9 @@ HgfsReaddirNextEntry(struct file *file,              // IN: 
file
    char *fileName = NULL;
    int result;
 
-   ASSERT(file->f_dentry->d_inode->i_sb);
+   ASSERT(DENTRY(file)->d_inode->i_sb);
 
-   si = HGFS_SB_TO_COMMON(file->f_dentry->d_inode->i_sb);
+   si = HGFS_SB_TO_COMMON(DENTRY(file)->d_inode->i_sb);
    *entryIgnore = FALSE;
 
    /*
@@ -1079,18 +1080,18 @@ HgfsReaddirNextEntry(struct file *file,              // 
IN: file
     */
    if (!strncmp(entryName, ".", sizeof ".")) {
       if (!dotAndDotDotIgnore) {
-         *entryIno = file->f_dentry->d_inode->i_ino;
+         *entryIno = DENTRY(file)->d_inode->i_ino;
       } else {
          *entryIgnore = TRUE;
       }
    } else if (!strncmp(entryName, "..", sizeof "..")) {
       if (!dotAndDotDotIgnore) {
-         *entryIno = compat_parent_ino(file->f_dentry);
+         *entryIno = compat_parent_ino(DENTRY(file));
       } else {
          *entryIgnore = TRUE;
       }
    } else {
-     *entryIno = HgfsGetFileInode(&entryAttrs, file->f_dentry->d_inode->i_sb);
+     *entryIno = HgfsGetFileInode(&entryAttrs, DENTRY(file)->d_inode->i_sb);
    }
 
    if (*entryIgnore) {
@@ -1170,16 +1171,16 @@ HgfsDoReaddir(struct file *file,         // IN:
    ASSERT(filldirCtx);
 
    if (!file ||
-      !(file->f_dentry) ||
-      !(file->f_dentry->d_inode)) {
+      !(DENTRY(file)) ||
+      !(DENTRY(file)->d_inode)) {
       LOG(4, (KERN_DEBUG "VMware hgfs: HgfsReaddir: null input\n"));
       return -EFAULT;
    }
 
    LOG(4, (KERN_DEBUG "VMware hgfs: %s(%s, inum %lu, pos %Lu)\n",
           __func__,
-          file->f_dentry->d_name.name,
-          file->f_dentry->d_inode->i_ino,
+          DENTRY(file)->d_name.name,
+          DENTRY(file)->d_inode->i_ino,
           *currentPos));
 
    /*
@@ -1294,7 +1295,7 @@ HgfsReaddir(struct file *file,         // IN:
    /* If either dot and dotdot are filled in for us we can exit. */
    if (!dir_emit_dots(file, ctx)) {
       LOG(6, (KERN_DEBUG "VMware hgfs: %s: dir_emit_dots(%s, @ %Lu)\n",
-              __func__, file->f_dentry->d_name.name, ctx->pos));
+              __func__, DENTRY(file)->d_name.name, ctx->pos));
       return 0;
    }
 
@@ -1464,8 +1465,8 @@ HgfsDirRelease(struct inode *inode,  // IN: Inode that 
the file* points to
 
    ASSERT(inode);
    ASSERT(file);
-   ASSERT(file->f_dentry);
-   ASSERT(file->f_dentry->d_sb);
+   ASSERT(DENTRY(file));
+   ASSERT(DENTRY(file)->d_sb);
 
    handle = FILE_GET_FI_P(file)->handle;
 
diff --git a/open-vm-tools/modules/linux/vmhgfs/file.c 
b/open-vm-tools/modules/linux/vmhgfs/file.c
index bbde3f4..39502d0 100644
--- a/open-vm-tools/modules/linux/vmhgfs/file.c
+++ b/open-vm-tools/modules/linux/vmhgfs/file.c
@@ -32,6 +32,7 @@
 #include "compat_fs.h"
 #include "compat_kernel.h"
 #include "compat_slab.h"
+#include "compat_dentry.h"
 
 /* Must be after compat_fs.h */
 #if defined VMW_USE_AIO
@@ -384,7 +385,7 @@ HgfsPackOpenRequest(struct inode *inode, // IN: Inode of 
the file to open
    /* Build full name to send to server. */
    if (HgfsBuildPath(name,
                      req->bufferSize - (requestSize - 1),
-                     file->f_dentry) < 0) {
+                     DENTRY(file)) < 0) {
       LOG(4, (KERN_DEBUG "VMware hgfs: HgfsPackOpenRequest: build path "
               "failed\n"));
       return -EINVAL;
@@ -523,8 +524,8 @@ HgfsOpen(struct inode *inode,  // IN: Inode of the file to 
open
    ASSERT(inode);
    ASSERT(inode->i_sb);
    ASSERT(file);
-   ASSERT(file->f_dentry);
-   ASSERT(file->f_dentry->d_inode);
+   ASSERT(DENTRY(file));
+   ASSERT(DENTRY(file)->d_inode);
 
    iinfo = INODE_GET_II_P(inode);
 
@@ -605,7 +606,7 @@ HgfsOpen(struct inode *inode,  // IN: Inode of the file to 
open
              * This is not the root of our file system so there should always
              * be a parent.
              */
-            ASSERT(file->f_dentry->d_parent);
+            ASSERT(DENTRY(file)->d_parent);
 
             /*
              * Here we obtain a reference on the parent to make sure it doesn't
@@ -620,10 +621,10 @@ HgfsOpen(struct inode *inode,  // IN: Inode of the file 
to open
              * We could do this if we were willing to give up support for
              * O_EXCL on 2.4 kernels.
              */
-            dparent = dget(file->f_dentry->d_parent);
+            dparent = dget(DENTRY(file)->d_parent);
             iparent = dparent->d_inode;
 
-            HgfsSetUidGid(iparent, file->f_dentry,
+            HgfsSetUidGid(iparent, DENTRY(file),
                           current_fsuid(), current_fsgid());
 
             dput(dparent);
@@ -683,7 +684,7 @@ out:
     * forcing a revalidate on one will not force it on any others.
     */
    if (result != 0 && iinfo->createdAndUnopened == TRUE) {
-      HgfsDentryAgeForce(file->f_dentry);
+      HgfsDentryAgeForce(DENTRY(file));
    }
    return result;
 }
@@ -772,13 +773,13 @@ HgfsFileRead(struct kiocb *iocb,      // IN:  I/O control 
block
 
    ASSERT(iocb);
    ASSERT(iocb->ki_filp);
-   ASSERT(iocb->ki_filp->f_dentry);
+   ASSERT(DENTRY(iocb->ki_filp));
    ASSERT(iov);
 
    pos = HGFS_IOCB_TO_POS(iocb, offset);
    iovSegs = HGFS_IOV_TO_SEGS(iov, numSegs);
 
-   readDentry = iocb->ki_filp->f_dentry;
+   readDentry = DENTRY(iocb->ki_filp);
 
    LOG(4, (KERN_DEBUG "VMware hgfs: %s(%s/%s)\n",
            __func__, readDentry->d_parent->d_name.name,
@@ -882,13 +883,13 @@ HgfsFileWrite(struct kiocb *iocb,      // IN:  I/O 
control block
 
    ASSERT(iocb);
    ASSERT(iocb->ki_filp);
-   ASSERT(iocb->ki_filp->f_dentry);
+   ASSERT(DENTRY(iocb->ki_filp));
    ASSERT(iov);
 
    pos = HGFS_IOCB_TO_POS(iocb, offset);
    iovSegs = HGFS_IOV_TO_SEGS(iov, numSegs);
 
-   writeDentry = iocb->ki_filp->f_dentry;
+   writeDentry = DENTRY(iocb->ki_filp);
 
    LOG(4, (KERN_DEBUG "VMware hgfs: %s(%s/%s)\n",
           __func__, writeDentry->d_parent->d_name.name,
@@ -951,7 +952,7 @@ HgfsRead(struct file *file,  // IN:  File to read from
    int result;
 
    ASSERT(file);
-   ASSERT(file->f_dentry);
+   ASSERT(DENTRY(file));
    ASSERT(buf);
    ASSERT(offset);
 
@@ -959,7 +960,7 @@ HgfsRead(struct file *file,  // IN:  File to read from
            __func__, file->f_dentry->d_parent->d_name.name,
            file->f_dentry->d_name.name, count, (long long) *offset));
 
-   result = HgfsRevalidate(file->f_dentry);
+   result = HgfsRevalidate(DENTRY(file));
    if (result) {
       LOG(4, (KERN_DEBUG "VMware hgfs: HgfsRead: invalid dentry\n"));
       goto out;
@@ -1002,8 +1003,8 @@ HgfsWrite(struct file *file,      // IN: File to write to
    int result;
 
    ASSERT(file);
-   ASSERT(file->f_dentry);
-   ASSERT(file->f_dentry->d_inode);
+   ASSERT(DENTRY(file));
+   ASSERT(DENTRY(file)->d_inode);
    ASSERT(buf);
    ASSERT(offset);
 
@@ -1011,7 +1012,7 @@ HgfsWrite(struct file *file,      // IN: File to write to
            __func__, file->f_dentry->d_parent->d_name.name,
            file->f_dentry->d_name.name, count, (long long) *offset));
 
-   result = HgfsRevalidate(file->f_dentry);
+   result = HgfsRevalidate(DENTRY(file));
    if (result) {
       LOG(4, (KERN_DEBUG "VMware hgfs: HgfsWrite: invalid dentry\n"));
       goto out;
@@ -1051,7 +1052,7 @@ HgfsSeek(struct file *file,  // IN:  File to seek
    loff_t result = -1;
 
    ASSERT(file);
-   ASSERT(file->f_dentry);
+   ASSERT(DENTRY(file));
 
    LOG(6, (KERN_DEBUG "VMware hgfs: %s(%s/%s, %u, %lld, %d)\n",
            __func__,
@@ -1059,7 +1060,7 @@ HgfsSeek(struct file *file,  // IN:  File to seek
             file->f_dentry->d_name.name,
             FILE_GET_FI_P(file)->handle, offset, origin));
 
-   result = (loff_t) HgfsRevalidate(file->f_dentry);
+   result = (loff_t) HgfsRevalidate(DENTRY(file));
    if (result) {
       LOG(6, (KERN_DEBUG "VMware hgfs: %s: invalid dentry\n", __func__));
       goto out;
@@ -1143,8 +1144,8 @@ HgfsFlush(struct file *file                        // IN: 
file to flush
    int ret = 0;
 
    LOG(4, (KERN_DEBUG "VMware hgfs: %s(%s/%s)\n",
-            __func__, file->f_dentry->d_parent->d_name.name,
-            file->f_dentry->d_name.name));
+            __func__, DENTRY(file)->d_parent->d_name.name,
+            DENTRY(file)->d_name.name));
 
    if ((file->f_mode & FMODE_WRITE) == 0) {
       goto exit;
@@ -1157,7 +1158,7 @@ HgfsFlush(struct file *file                        // IN: 
file to flush
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 36)
    ret = vfs_fsync(file, 0);
 #else
-   ret = HgfsDoFsync(file->f_dentry->d_inode);
+   ret = HgfsDoFsync(DENTRY(file)->d_inode);
 #endif
 
 exit:
@@ -1215,13 +1216,13 @@ HgfsFsync(struct file *file,            // IN: File we 
operate on
 
    LOG(4, (KERN_DEBUG "VMware hgfs: %s(%s/%s, %lld, %lld, %d)\n",
            __func__,
-           file->f_dentry->d_parent->d_name.name,
-           file->f_dentry->d_name.name,
+           DENTRY(file)->d_parent->d_name.name,
+           DENTRY(file)->d_name.name,
            startRange, endRange,
            datasync));
 
    /* Flush writes to the server and return any errors */
-   inode = file->f_dentry->d_inode;
+   inode = DENTRY(file)->d_inode;
 #if defined VMW_FSYNC_31
    ret = filemap_write_and_wait_range(inode->i_mapping, startRange, endRange);
 #else
@@ -1261,14 +1262,14 @@ HgfsMmap(struct file *file,            // IN: File we 
operate on
 
    ASSERT(file);
    ASSERT(vma);
-   ASSERT(file->f_dentry);
+   ASSERT(DENTRY(file));
 
    LOG(6, (KERN_DEBUG "VMware hgfs: %s(%s/%s)\n",
            __func__,
            file->f_dentry->d_parent->d_name.name,
            file->f_dentry->d_name.name));
 
-   result = HgfsRevalidate(file->f_dentry);
+   result = HgfsRevalidate(DENTRY(file));
    if (result) {
       LOG(4, (KERN_DEBUG "VMware hgfs: %s: invalid dentry\n", __func__));
       goto out;
@@ -1309,8 +1310,8 @@ HgfsRelease(struct inode *inode,  // IN: Inode that this 
file points to
 
    ASSERT(inode);
    ASSERT(file);
-   ASSERT(file->f_dentry);
-   ASSERT(file->f_dentry->d_sb);
+   ASSERT(DENTRY(file));
+   ASSERT(DENTRY(file)->d_sb);
 
    handle = FILE_GET_FI_P(file)->handle;
    LOG(6, (KERN_DEBUG "VMware hgfs: %s(%s/%s, %u)\n",
@@ -1443,14 +1444,14 @@ HgfsSendfile(struct file *file,    // IN: File to read 
from
    ssize_t result;
 
    ASSERT(file);
-   ASSERT(file->f_dentry);
+   ASSERT(DENTRY(file));
    ASSERT(target);
    ASSERT(offset);
    ASSERT(actor);
 
    LOG(6, (KERN_DEBUG "VMware hgfs: HgfsSendfile: was called\n"));
 
-   result = HgfsRevalidate(file->f_dentry);
+   result = HgfsRevalidate(DENTRY(file));
    if (result) {
       LOG(4, (KERN_DEBUG "VMware hgfs: HgfsSendfile: invalid dentry\n"));
       goto out;
@@ -1497,7 +1498,7 @@ HgfsSpliceRead(struct file *file,            // IN: File 
to read from
    ssize_t result;
 
    ASSERT(file);
-   ASSERT(file->f_dentry);
+   ASSERT(DENTRY(file));
 
    LOG(6, (KERN_DEBUG "VMware hgfs: %s(%s/%s, %lu@%Lu)\n",
            __func__,
@@ -1505,7 +1506,7 @@ HgfsSpliceRead(struct file *file,            // IN: File 
to read from
            file->f_dentry->d_name.name,
            (unsigned long) len, (unsigned long long) *offset));
 
-   result = HgfsRevalidate(file->f_dentry);
+   result = HgfsRevalidate(DENTRY(file));
    if (result) {
       LOG(4, (KERN_DEBUG "VMware hgfs: %s: invalid dentry\n", __func__));
       goto out;
diff --git a/open-vm-tools/modules/linux/vmhgfs/fsutil.c 
b/open-vm-tools/modules/linux/vmhgfs/fsutil.c
index 5023324..a2e794c 100644
--- a/open-vm-tools/modules/linux/vmhgfs/fsutil.c
+++ b/open-vm-tools/modules/linux/vmhgfs/fsutil.c
@@ -36,6 +36,7 @@
 #include "compat_sched.h"
 #include "compat_slab.h"
 #include "compat_spinlock.h"
+#include "compat_dentry.h"
 
 #include "vm_assert.h"
 #include "cpName.h"
@@ -1924,7 +1925,7 @@ HgfsCreateFileInfo(struct file *file,  // IN: File 
pointer to attach to
 
    ASSERT(file);
 
-   inodeInfo = INODE_GET_II_P(file->f_dentry->d_inode);
+   inodeInfo = INODE_GET_II_P(DENTRY(file)->d_inode);
    ASSERT(inodeInfo);
 
    /* Get the mode of the opened file. */
diff --git a/open-vm-tools/modules/linux/vmhgfs/shared/compat_dentry.h 
b/open-vm-tools/modules/linux/vmhgfs/shared/compat_dentry.h
new file mode 100644
index 0000000..dd53760
--- /dev/null
+++ b/open-vm-tools/modules/linux/shared/compat_dentry.h
@@ -0,0 +1,10 @@
+#ifndef __COMPAT_DENTRY_H__
+#   define __COMPAT_DENTRY_H__
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)
+# define DENTRY(file) (file->f_path.dentry)
+#else
+# define DENTRY(file) (file->f_dentry)
+#endif
+
+#endif /* __COMPAT_DENTRY_H__ */
-- 
2.3.4





Reply via email to