Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 198168
b: refs/heads/master
c: 1977bb2
h: refs/heads/master
v: v3
  • Loading branch information
John Kacur authored and Frederic Weisbecker committed May 17, 2010
1 parent 2551d41 commit a5c4e1a
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 19 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 2ff82f852189226cda3cb192985a4a7fc750ab26
refs/heads/master: 1977bb2ed8ffdd161fe1c9eef1f9fd283e41d4b5
35 changes: 17 additions & 18 deletions trunk/fs/coda/pioctl.c
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/*
* Pioctl operations for Coda.
* Original version: (C) 1996 Peter Braam
* Original version: (C) 1996 Peter Braam
* Rewritten for Linux 2.1: (C) 1997 Carnegie Mellon University
*
* Carnegie Mellon encourages users of this code to contribute improvements
Expand Down Expand Up @@ -31,8 +31,7 @@ static long coda_pioctl(struct file *filp, unsigned int cmd,
unsigned long user_data);

/* exported from this file */
const struct inode_operations coda_ioctl_inode_operations =
{
const struct inode_operations coda_ioctl_inode_operations = {
.permission = coda_ioctl_permission,
.setattr = coda_setattr,
};
Expand All @@ -52,49 +51,49 @@ static long coda_pioctl(struct file *filp, unsigned int cmd,
unsigned long user_data)
{
struct path path;
int error;
int error;
struct PioctlData data;
struct inode *inode = filp->f_dentry->d_inode;
struct inode *target_inode = NULL;
struct coda_inode_info *cnp;
struct inode *target_inode = NULL;
struct coda_inode_info *cnp;

lock_kernel();

/* get the Pioctl data arguments from user space */
if (copy_from_user(&data, (void __user *)user_data, sizeof(data))) {
/* get the Pioctl data arguments from user space */
if (copy_from_user(&data, (void __user *)user_data, sizeof(data))) {
error = -EINVAL;
goto out;
}
/*
* Look up the pathname. Note that the pathname is in
* user memory, and namei takes care of this
*/

/*
* Look up the pathname. Note that the pathname is in
* user memory, and namei takes care of this
*/
if (data.follow)
error = user_path(data.path, &path);
error = user_path(data.path, &path);
else
error = user_lpath(data.path, &path);
error = user_lpath(data.path, &path);

if (error)
goto out;
else
target_inode = path.dentry->d_inode;

/* return if it is not a Coda inode */
if ( target_inode->i_sb != inode->i_sb ) {
if (target_inode->i_sb != inode->i_sb) {
path_put(&path);
error = -EINVAL;
goto out;
}

/* now proceed to make the upcall */
cnp = ITOC(target_inode);
cnp = ITOC(target_inode);

error = venus_pioctl(inode->i_sb, &(cnp->c_fid), cmd, &data);

path_put(&path);

out:
unlock_kernel();
return error;
return error;
}

0 comments on commit a5c4e1a

Please sign in to comment.