aboutsummaryrefslogtreecommitdiffstats
path: root/fs/coda
diff options
context:
space:
mode:
Diffstat (limited to 'fs/coda')
-rw-r--r--fs/coda/pioctl.c35
1 files changed, 17 insertions, 18 deletions
diff --git a/fs/coda/pioctl.c b/fs/coda/pioctl.c
index 96ace2ce7e6c..ca25d96d45c9 100644
--- a/fs/coda/pioctl.c
+++ b/fs/coda/pioctl.c
@@ -1,6 +1,6 @@
1/* 1/*
2 * Pioctl operations for Coda. 2 * Pioctl operations for Coda.
3 * Original version: (C) 1996 Peter Braam 3 * Original version: (C) 1996 Peter Braam
4 * Rewritten for Linux 2.1: (C) 1997 Carnegie Mellon University 4 * Rewritten for Linux 2.1: (C) 1997 Carnegie Mellon University
5 * 5 *
6 * Carnegie Mellon encourages users of this code to contribute improvements 6 * Carnegie Mellon encourages users of this code to contribute improvements
@@ -31,8 +31,7 @@ static long coda_pioctl(struct file *filp, unsigned int cmd,
31 unsigned long user_data); 31 unsigned long user_data);
32 32
33/* exported from this file */ 33/* exported from this file */
34const struct inode_operations coda_ioctl_inode_operations = 34const struct inode_operations coda_ioctl_inode_operations = {
35{
36 .permission = coda_ioctl_permission, 35 .permission = coda_ioctl_permission,
37 .setattr = coda_setattr, 36 .setattr = coda_setattr,
38}; 37};
@@ -52,28 +51,28 @@ static long coda_pioctl(struct file *filp, unsigned int cmd,
52 unsigned long user_data) 51 unsigned long user_data)
53{ 52{
54 struct path path; 53 struct path path;
55 int error; 54 int error;
56 struct PioctlData data; 55 struct PioctlData data;
57 struct inode *inode = filp->f_dentry->d_inode; 56 struct inode *inode = filp->f_dentry->d_inode;
58 struct inode *target_inode = NULL; 57 struct inode *target_inode = NULL;
59 struct coda_inode_info *cnp; 58 struct coda_inode_info *cnp;
60 59
61 lock_kernel(); 60 lock_kernel();
62 61
63 /* get the Pioctl data arguments from user space */ 62 /* get the Pioctl data arguments from user space */
64 if (copy_from_user(&data, (void __user *)user_data, sizeof(data))) { 63 if (copy_from_user(&data, (void __user *)user_data, sizeof(data))) {
65 error = -EINVAL; 64 error = -EINVAL;
66 goto out; 65 goto out;
67 } 66 }
68 67
69 /* 68 /*
70 * Look up the pathname. Note that the pathname is in 69 * Look up the pathname. Note that the pathname is in
71 * user memory, and namei takes care of this 70 * user memory, and namei takes care of this
72 */ 71 */
73 if (data.follow) 72 if (data.follow)
74 error = user_path(data.path, &path); 73 error = user_path(data.path, &path);
75 else 74 else
76 error = user_lpath(data.path, &path); 75 error = user_lpath(data.path, &path);
77 76
78 if (error) 77 if (error)
79 goto out; 78 goto out;
@@ -81,14 +80,14 @@ static long coda_pioctl(struct file *filp, unsigned int cmd,
81 target_inode = path.dentry->d_inode; 80 target_inode = path.dentry->d_inode;
82 81
83 /* return if it is not a Coda inode */ 82 /* return if it is not a Coda inode */
84 if ( target_inode->i_sb != inode->i_sb ) { 83 if (target_inode->i_sb != inode->i_sb) {
85 path_put(&path); 84 path_put(&path);
86 error = -EINVAL; 85 error = -EINVAL;
87 goto out; 86 goto out;
88 } 87 }
89 88
90 /* now proceed to make the upcall */ 89 /* now proceed to make the upcall */
91 cnp = ITOC(target_inode); 90 cnp = ITOC(target_inode);
92 91
93 error = venus_pioctl(inode->i_sb, &(cnp->c_fid), cmd, &data); 92 error = venus_pioctl(inode->i_sb, &(cnp->c_fid), cmd, &data);
94 93
@@ -96,5 +95,5 @@ static long coda_pioctl(struct file *filp, unsigned int cmd,
96 95
97out: 96out:
98 unlock_kernel(); 97 unlock_kernel();
99 return error; 98 return error;
100} 99}