summaryrefslogblamecommitdiffstats
path: root/core/modules/vmware15/patches/vmblock__3.11-9.9__1.0-11.0.patch
blob: dedb26464ce01cb38be0208c530a31f1fcef68d5 (plain) (tree)


























































































































                                                                                                                        
--- a/linux/control.c	2013-10-18 19:56:11.000000000 +0200
+++ b/linux/control.c	2014-02-14 16:20:18.667236035 +0100
@@ -208,17 +208,18 @@
    VMBlockSetProcEntryOwner(controlProcMountpoint);
 
    /* Create /proc/fs/vmblock/dev */
-   controlProcEntry = create_proc_entry(VMBLOCK_CONTROL_DEVNAME,
+   /* controlProcEntry = create_proc_entry(VMBLOCK_CONTROL_DEVNAME,
                                         VMBLOCK_CONTROL_MODE,
-                                        controlProcDirEntry);
-   if (!controlProcEntry) {
+                                        controlProcDirEntry);*/
+   controlProcEntry = proc_create(VMBLOCK_CONTROL_DEVNAME, VMBLOCK_CONTROL_MODE, controlProcDirEntry, &ControlFileOps);
+   if (controlProcEntry == NULL) {
       Warning("SetupProcDevice: could not create " VMBLOCK_DEVICE "\n");
       remove_proc_entry(VMBLOCK_CONTROL_MOUNTPOINT, controlProcDirEntry);
       remove_proc_entry(VMBLOCK_CONTROL_PROC_DIRNAME, NULL);
       return -EINVAL;
    }
 
-   controlProcEntry->proc_fops = &ControlFileOps;
+   /*controlProcEntry->proc_fops = &ControlFileOps;*/
    return 0;
 }
 
@@ -293,7 +294,7 @@
 
    retval = i < 0 ? -EINVAL : blockOp(name, blocker);
 
-   putname(name);
+  __putname(name);
 
    return retval;
 }
--- a/linux/file.c	2013-10-18 19:56:11.000000000 +0200
+++ b/linux/file.c	2014-02-14 16:20:21.455236098 +0100
@@ -38,46 +38,6 @@
 typedef ino_t inode_num_t;
 #endif
 
-/* Specifically for our filldir_t callback */
-typedef struct FilldirInfo {
-   filldir_t filldir;
-   void *dirent;
-} FilldirInfo;
-
-
-/*
- *----------------------------------------------------------------------------
- *
- * Filldir --
- *
- *    Callback function for readdir that we use in place of the one provided.
- *    This allows us to specify that each dentry is a symlink, but pass through
- *    everything else to the original filldir function.
- *
- * Results:
- *    Original filldir's return value.
- *
- * Side effects:
- *    Directory information gets copied to user's buffer.
- *
- *----------------------------------------------------------------------------
- */
-
-static int
-Filldir(void *buf,              // IN: Dirent buffer passed from FileOpReaddir
-        const char *name,       // IN: Dirent name
-        int namelen,            // IN: len of dirent's name
-        loff_t offset,          // IN: Offset
-        inode_num_t ino,        // IN: Inode number of dirent
-        unsigned int d_type)    // IN: Type of file
-{
-   FilldirInfo *info = buf;
-
-   /* Specify DT_LNK regardless */
-   return info->filldir(info->dirent, name, namelen, offset, ino, DT_LNK);
-}
-
-
 /* File operations */
 
 /*
@@ -166,11 +126,10 @@
 
 static int
 FileOpReaddir(struct file *file,  // IN
-              void *dirent,       // IN
-              filldir_t filldir)  // IN
+              struct dir_context *ctx)  // IN
 {
    int ret;
-   FilldirInfo info;
+
    struct file *actualFile;
 
    if (!file) {
@@ -184,12 +143,10 @@
       return -EINVAL;
    }
 
-   info.filldir = filldir;
-   info.dirent = dirent;
-
-   actualFile->f_pos = file->f_pos;
-   ret = vfs_readdir(actualFile, Filldir, &info);
-   file->f_pos = actualFile->f_pos;
+   /* Ricky Wong Yung Fei:
+    * Manipulation of pos is now handled internally by iterate_dir().
+    */
+   ret = iterate_dir(actualFile, ctx);
 
    return ret;
 }
@@ -237,7 +194,7 @@
 
 
 struct file_operations RootFileOps = {
-   .readdir = FileOpReaddir,
+   .iterate = FileOpReaddir,
    .open    = FileOpOpen,
    .release = FileOpRelease,
 };