~ubuntu-branches/debian/sid/open-vm-tools/sid

« back to all changes in this revision

Viewing changes to modules/linux/vmblock/linux/control.c

  • Committer: Package Import Robot
  • Author(s): Bernd Zeimetz
  • Date: 2014-01-07 02:32:03 UTC
  • mfrom: (1.4.12)
  • Revision ID: package-import@ubuntu.com-20140107023203-bwm0bzkodbaw0k13
Tags: 2:9.4.0-1280544-1
* [b85cd491] Taking over the maintenance of open-vm-tools. (Closes: #717381)
* [ecccbddd] Adding watch file.
* [12cfd169] Merge tag 'upstream/9.4.0-1280544'
  Upstream version 9.4.0-1280544
* [7e93ef77] Refreshing patches.
* [25fe744b] Adding CUSTOM_PROCPS_NAME/CFLAGS to dh_auto_configure call.
* [4d1081bc] Importing patches from Ubuntu.
  As open-vm-tools should just do the right thing, we leave building
  vmsync enabled to make backporting easier.
  Thanks to Nate Muench <NowIWillDestroyAbydos@gmail.com>
* [a0fae111] Copy upstream's dkms config for dh_dkms.
* The new upstream release, together with the flags and new patches
  mentioned above, makes open-vm-tools build with Kernel 3.11.
  Thanks to: Jim Barber and Mihai Limbasan
  Closes: #729540

Show diffs side-by-side

added added

removed removed

Lines of Context:
208
208
   VMBlockSetProcEntryOwner(controlProcMountpoint);
209
209
 
210
210
   /* Create /proc/fs/vmblock/dev */
211
 
   controlProcEntry = proc_create(VMBLOCK_CONTROL_DEVNAME,
212
 
                                  VMBLOCK_CONTROL_MODE,
213
 
                                  controlProcDirEntry,
214
 
                                  &ControlFileOps);
215
 
   if (!controlProcEntry) {
 
211
   /*controlProcEntry = create_proc_entry(VMBLOCK_CONTROL_DEVNAME,
 
212
                                        VMBLOCK_CONTROL_MODE,
 
213
                                        controlProcDirEntry);*/
 
214
   controlProcEntry = proc_create(VMBLOCK_CONTROL_DEVNAME, VMBLOCK_CONTROL_MODE, controlProcDirEntry, &ControlFileOps);
 
215
   if (controlProcEntry == NULL) {
216
216
      Warning("SetupProcDevice: could not create " VMBLOCK_DEVICE "\n");
217
217
      remove_proc_entry(VMBLOCK_CONTROL_MOUNTPOINT, controlProcDirEntry);
218
218
      remove_proc_entry(VMBLOCK_CONTROL_PROC_DIRNAME, NULL);
219
219
      return -EINVAL;
220
220
   }
221
221
 
 
222
   /* controlProcEntry->proc_fops = &ControlFileOps; */
222
223
   return 0;
223
224
}
224
225
 
278
279
               int (*blockOp)(const char *filename,   // IN: block operation
279
280
                              const os_blocker_id_t blocker))
280
281
{
281
 
   struct filename *nm;
282
 
   char *adjname;
 
282
   char *name;
283
283
   int i;
284
284
   int retval;
285
285
 
286
 
   nm = getname(buf);
287
 
   if (IS_ERR(nm)) {
288
 
      return PTR_ERR(nm);
289
 
   }
290
 
 
291
 
   i = strlen(nm->name) - 1;
292
 
   if (i < 0) {
293
 
      putname(nm);
294
 
      return -EINVAL;
295
 
   }
296
 
 
297
 
   if (nm->name[i] != '/') {
298
 
      retval = blockOp(nm->name, blocker);
299
 
   } else {
300
 
      adjname = kstrdup(nm->name, GFP_KERNEL);
301
 
      while (adjname[i] == '/')
302
 
         i--;
303
 
      adjname[i+1] = '\0';
304
 
      retval = blockOp(adjname, blocker);
305
 
      kfree(adjname);
306
 
   }
307
 
 
308
 
   putname(nm);
 
286
   name = getname(buf);
 
287
   if (IS_ERR(name)) {
 
288
      return PTR_ERR(name);
 
289
   }
 
290
 
 
291
   for (i = strlen(name) - 1; i >= 0 && name[i] == '/'; i--) {
 
292
      name[i] = '\0';
 
293
   }
 
294
 
 
295
   retval = i < 0 ? -EINVAL : blockOp(name, blocker);
 
296
 
 
297
   __putname(name);
 
298
 
309
299
   return retval;
310
300
}
311
301