diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-26 23:16:07 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-26 23:16:07 -0500 |
commit | d895cb1af15c04c522a25c79cc429076987c089b (patch) | |
tree | 895dc9157e28f603d937a58be664e4e440d5530c /drivers | |
parent | 9626357371b519f2b955fef399647181034a77fe (diff) | |
parent | d3d009cb965eae7e002ea5badf603ea8f4c34915 (diff) |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull vfs pile (part one) from Al Viro:
"Assorted stuff - cleaning namei.c up a bit, fixing ->d_name/->d_parent
locking violations, etc.
The most visible changes here are death of FS_REVAL_DOT (replaced with
"has ->d_weak_revalidate()") and a new helper getting from struct file
to inode. Some bits of preparation to xattr method interface changes.
Misc patches by various people sent this cycle *and* ocfs2 fixes from
several cycles ago that should've been upstream right then.
PS: the next vfs pile will be xattr stuff."
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (46 commits)
saner proc_get_inode() calling conventions
proc: avoid extra pde_put() in proc_fill_super()
fs: change return values from -EACCES to -EPERM
fs/exec.c: make bprm_mm_init() static
ocfs2/dlm: use GFP_ATOMIC inside a spin_lock
ocfs2: fix possible use-after-free with AIO
ocfs2: Fix oops in ocfs2_fast_symlink_readpage() code path
get_empty_filp()/alloc_file() leave both ->f_pos and ->f_version zero
target: writev() on single-element vector is pointless
export kernel_write(), convert open-coded instances
fs: encode_fh: return FILEID_INVALID if invalid fid_type
kill f_vfsmnt
vfs: kill FS_REVAL_DOT by adding a d_weak_revalidate dentry op
nfsd: handle vfs_getattr errors in acl protocol
switch vfs_getattr() to struct path
default SET_PERSONALITY() in linux/elf.h
ceph: prepopulate inodes only when request is aborted
d_hash_and_lookup(): export, switch open-coded instances
9p: switch v9fs_set_create_acl() to inode+fid, do it before d_instantiate()
9p: split dropping the acls from v9fs_set_create_acl()
...
Diffstat (limited to 'drivers')
87 files changed, 205 insertions, 293 deletions
diff --git a/drivers/base/devtmpfs.c b/drivers/base/devtmpfs.c index 17cf7cad601e..01fc5b07f951 100644 --- a/drivers/base/devtmpfs.c +++ b/drivers/base/devtmpfs.c | |||
@@ -302,7 +302,8 @@ static int handle_remove(const char *nodename, struct device *dev) | |||
302 | 302 | ||
303 | if (dentry->d_inode) { | 303 | if (dentry->d_inode) { |
304 | struct kstat stat; | 304 | struct kstat stat; |
305 | err = vfs_getattr(parent.mnt, dentry, &stat); | 305 | struct path p = {.mnt = parent.mnt, .dentry = dentry}; |
306 | err = vfs_getattr(&p, &stat); | ||
306 | if (!err && dev_mynode(dev, dentry->d_inode, &stat)) { | 307 | if (!err && dev_mynode(dev, dentry->d_inode, &stat)) { |
307 | struct iattr newattrs; | 308 | struct iattr newattrs; |
308 | /* | 309 | /* |
diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c index 4a223fedcd73..4b1f9265887f 100644 --- a/drivers/base/firmware_class.c +++ b/drivers/base/firmware_class.c | |||
@@ -279,7 +279,7 @@ MODULE_PARM_DESC(path, "customized firmware image search path with a higher prio | |||
279 | static noinline_for_stack long fw_file_size(struct file *file) | 279 | static noinline_for_stack long fw_file_size(struct file *file) |
280 | { | 280 | { |
281 | struct kstat st; | 281 | struct kstat st; |
282 | if (vfs_getattr(file->f_path.mnt, file->f_path.dentry, &st)) | 282 | if (vfs_getattr(&file->f_path, &st)) |
283 | return -1; | 283 | return -1; |
284 | if (!S_ISREG(st.mode)) | 284 | if (!S_ISREG(st.mode)) |
285 | return -1; | 285 | return -1; |
diff --git a/drivers/block/DAC960.c b/drivers/block/DAC960.c index 9a13e889837e..8f12dc78a848 100644 --- a/drivers/block/DAC960.c +++ b/drivers/block/DAC960.c | |||
@@ -6547,7 +6547,7 @@ static ssize_t dac960_user_command_proc_write(struct file *file, | |||
6547 | const char __user *Buffer, | 6547 | const char __user *Buffer, |
6548 | size_t Count, loff_t *pos) | 6548 | size_t Count, loff_t *pos) |
6549 | { | 6549 | { |
6550 | DAC960_Controller_T *Controller = (DAC960_Controller_T *) PDE(file->f_path.dentry->d_inode)->data; | 6550 | DAC960_Controller_T *Controller = (DAC960_Controller_T *) PDE(file_inode(file))->data; |
6551 | unsigned char CommandBuffer[80]; | 6551 | unsigned char CommandBuffer[80]; |
6552 | int Length; | 6552 | int Length; |
6553 | if (Count > sizeof(CommandBuffer)-1) return -EINVAL; | 6553 | if (Count > sizeof(CommandBuffer)-1) return -EINVAL; |
diff --git a/drivers/block/loop.c b/drivers/block/loop.c index ae1251270624..8031a8cdd698 100644 --- a/drivers/block/loop.c +++ b/drivers/block/loop.c | |||
@@ -1139,7 +1139,7 @@ loop_get_status(struct loop_device *lo, struct loop_info64 *info) | |||
1139 | 1139 | ||
1140 | if (lo->lo_state != Lo_bound) | 1140 | if (lo->lo_state != Lo_bound) |
1141 | return -ENXIO; | 1141 | return -ENXIO; |
1142 | error = vfs_getattr(file->f_path.mnt, file->f_path.dentry, &stat); | 1142 | error = vfs_getattr(&file->f_path, &stat); |
1143 | if (error) | 1143 | if (error) |
1144 | return error; | 1144 | return error; |
1145 | memset(info, 0, sizeof(*info)); | 1145 | memset(info, 0, sizeof(*info)); |
diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c index 043ddcca4abf..ade146bf65e5 100644 --- a/drivers/block/nbd.c +++ b/drivers/block/nbd.c | |||
@@ -625,7 +625,7 @@ static int __nbd_ioctl(struct block_device *bdev, struct nbd_device *nbd, | |||
625 | return -EBUSY; | 625 | return -EBUSY; |
626 | file = fget(arg); | 626 | file = fget(arg); |
627 | if (file) { | 627 | if (file) { |
628 | struct inode *inode = file->f_path.dentry->d_inode; | 628 | struct inode *inode = file_inode(file); |
629 | if (S_ISSOCK(inode->i_mode)) { | 629 | if (S_ISSOCK(inode->i_mode)) { |
630 | nbd->file = file; | 630 | nbd->file = file; |
631 | nbd->sock = SOCKET_I(inode); | 631 | nbd->sock = SOCKET_I(inode); |
diff --git a/drivers/char/dsp56k.c b/drivers/char/dsp56k.c index 052797b32bd3..01a5ca7425d7 100644 --- a/drivers/char/dsp56k.c +++ b/drivers/char/dsp56k.c | |||
@@ -181,7 +181,7 @@ static int dsp56k_upload(u_char __user *bin, int len) | |||
181 | static ssize_t dsp56k_read(struct file *file, char __user *buf, size_t count, | 181 | static ssize_t dsp56k_read(struct file *file, char __user *buf, size_t count, |
182 | loff_t *ppos) | 182 | loff_t *ppos) |
183 | { | 183 | { |
184 | struct inode *inode = file->f_path.dentry->d_inode; | 184 | struct inode *inode = file_inode(file); |
185 | int dev = iminor(inode) & 0x0f; | 185 | int dev = iminor(inode) & 0x0f; |
186 | 186 | ||
187 | switch(dev) | 187 | switch(dev) |
@@ -244,7 +244,7 @@ static ssize_t dsp56k_read(struct file *file, char __user *buf, size_t count, | |||
244 | static ssize_t dsp56k_write(struct file *file, const char __user *buf, size_t count, | 244 | static ssize_t dsp56k_write(struct file *file, const char __user *buf, size_t count, |
245 | loff_t *ppos) | 245 | loff_t *ppos) |
246 | { | 246 | { |
247 | struct inode *inode = file->f_path.dentry->d_inode; | 247 | struct inode *inode = file_inode(file); |
248 | int dev = iminor(inode) & 0x0f; | 248 | int dev = iminor(inode) & 0x0f; |
249 | 249 | ||
250 | switch(dev) | 250 | switch(dev) |
@@ -306,7 +306,7 @@ static ssize_t dsp56k_write(struct file *file, const char __user *buf, size_t co | |||
306 | static long dsp56k_ioctl(struct file *file, unsigned int cmd, | 306 | static long dsp56k_ioctl(struct file *file, unsigned int cmd, |
307 | unsigned long arg) | 307 | unsigned long arg) |
308 | { | 308 | { |
309 | int dev = iminor(file->f_path.dentry->d_inode) & 0x0f; | 309 | int dev = iminor(file_inode(file)) & 0x0f; |
310 | void __user *argp = (void __user *)arg; | 310 | void __user *argp = (void __user *)arg; |
311 | 311 | ||
312 | switch(dev) | 312 | switch(dev) |
@@ -408,7 +408,7 @@ static long dsp56k_ioctl(struct file *file, unsigned int cmd, | |||
408 | #if 0 | 408 | #if 0 |
409 | static unsigned int dsp56k_poll(struct file *file, poll_table *wait) | 409 | static unsigned int dsp56k_poll(struct file *file, poll_table *wait) |
410 | { | 410 | { |
411 | int dev = iminor(file->f_path.dentry->d_inode) & 0x0f; | 411 | int dev = iminor(file_inode(file)) & 0x0f; |
412 | 412 | ||
413 | switch(dev) | 413 | switch(dev) |
414 | { | 414 | { |
diff --git a/drivers/char/dtlk.c b/drivers/char/dtlk.c index 85156dd0caee..65a8d96c0e93 100644 --- a/drivers/char/dtlk.c +++ b/drivers/char/dtlk.c | |||
@@ -125,7 +125,7 @@ static char dtlk_write_tts(char); | |||
125 | static ssize_t dtlk_read(struct file *file, char __user *buf, | 125 | static ssize_t dtlk_read(struct file *file, char __user *buf, |
126 | size_t count, loff_t * ppos) | 126 | size_t count, loff_t * ppos) |
127 | { | 127 | { |
128 | unsigned int minor = iminor(file->f_path.dentry->d_inode); | 128 | unsigned int minor = iminor(file_inode(file)); |
129 | char ch; | 129 | char ch; |
130 | int i = 0, retries; | 130 | int i = 0, retries; |
131 | 131 | ||
@@ -177,7 +177,7 @@ static ssize_t dtlk_write(struct file *file, const char __user *buf, | |||
177 | } | 177 | } |
178 | #endif | 178 | #endif |
179 | 179 | ||
180 | if (iminor(file->f_path.dentry->d_inode) != DTLK_MINOR) | 180 | if (iminor(file_inode(file)) != DTLK_MINOR) |
181 | return -EINVAL; | 181 | return -EINVAL; |
182 | 182 | ||
183 | while (1) { | 183 | while (1) { |
diff --git a/drivers/char/lp.c b/drivers/char/lp.c index a741e418b456..dafd9ac6428f 100644 --- a/drivers/char/lp.c +++ b/drivers/char/lp.c | |||
@@ -294,7 +294,7 @@ static int lp_wait_ready(int minor, int nonblock) | |||
294 | static ssize_t lp_write(struct file * file, const char __user * buf, | 294 | static ssize_t lp_write(struct file * file, const char __user * buf, |
295 | size_t count, loff_t *ppos) | 295 | size_t count, loff_t *ppos) |
296 | { | 296 | { |
297 | unsigned int minor = iminor(file->f_path.dentry->d_inode); | 297 | unsigned int minor = iminor(file_inode(file)); |
298 | struct parport *port = lp_table[minor].dev->port; | 298 | struct parport *port = lp_table[minor].dev->port; |
299 | char *kbuf = lp_table[minor].lp_buffer; | 299 | char *kbuf = lp_table[minor].lp_buffer; |
300 | ssize_t retv = 0; | 300 | ssize_t retv = 0; |
@@ -413,7 +413,7 @@ static ssize_t lp_read(struct file * file, char __user * buf, | |||
413 | size_t count, loff_t *ppos) | 413 | size_t count, loff_t *ppos) |
414 | { | 414 | { |
415 | DEFINE_WAIT(wait); | 415 | DEFINE_WAIT(wait); |
416 | unsigned int minor=iminor(file->f_path.dentry->d_inode); | 416 | unsigned int minor=iminor(file_inode(file)); |
417 | struct parport *port = lp_table[minor].dev->port; | 417 | struct parport *port = lp_table[minor].dev->port; |
418 | ssize_t retval = 0; | 418 | ssize_t retval = 0; |
419 | char *kbuf = lp_table[minor].lp_buffer; | 419 | char *kbuf = lp_table[minor].lp_buffer; |
@@ -679,7 +679,7 @@ static long lp_ioctl(struct file *file, unsigned int cmd, | |||
679 | struct timeval par_timeout; | 679 | struct timeval par_timeout; |
680 | int ret; | 680 | int ret; |
681 | 681 | ||
682 | minor = iminor(file->f_path.dentry->d_inode); | 682 | minor = iminor(file_inode(file)); |
683 | mutex_lock(&lp_mutex); | 683 | mutex_lock(&lp_mutex); |
684 | switch (cmd) { | 684 | switch (cmd) { |
685 | case LPSETTIMEOUT: | 685 | case LPSETTIMEOUT: |
@@ -707,7 +707,7 @@ static long lp_compat_ioctl(struct file *file, unsigned int cmd, | |||
707 | struct timeval par_timeout; | 707 | struct timeval par_timeout; |
708 | int ret; | 708 | int ret; |
709 | 709 | ||
710 | minor = iminor(file->f_path.dentry->d_inode); | 710 | minor = iminor(file_inode(file)); |
711 | mutex_lock(&lp_mutex); | 711 | mutex_lock(&lp_mutex); |
712 | switch (cmd) { | 712 | switch (cmd) { |
713 | case LPSETTIMEOUT: | 713 | case LPSETTIMEOUT: |
diff --git a/drivers/char/mem.c b/drivers/char/mem.c index 6f6e92a3102d..2c644afbcdd4 100644 --- a/drivers/char/mem.c +++ b/drivers/char/mem.c | |||
@@ -708,7 +708,7 @@ static loff_t memory_lseek(struct file *file, loff_t offset, int orig) | |||
708 | { | 708 | { |
709 | loff_t ret; | 709 | loff_t ret; |
710 | 710 | ||
711 | mutex_lock(&file->f_path.dentry->d_inode->i_mutex); | 711 | mutex_lock(&file_inode(file)->i_mutex); |
712 | switch (orig) { | 712 | switch (orig) { |
713 | case SEEK_CUR: | 713 | case SEEK_CUR: |
714 | offset += file->f_pos; | 714 | offset += file->f_pos; |
@@ -725,7 +725,7 @@ static loff_t memory_lseek(struct file *file, loff_t offset, int orig) | |||
725 | default: | 725 | default: |
726 | ret = -EINVAL; | 726 | ret = -EINVAL; |
727 | } | 727 | } |
728 | mutex_unlock(&file->f_path.dentry->d_inode->i_mutex); | 728 | mutex_unlock(&file_inode(file)->i_mutex); |
729 | return ret; | 729 | return ret; |
730 | } | 730 | } |
731 | 731 | ||
diff --git a/drivers/char/nsc_gpio.c b/drivers/char/nsc_gpio.c index 808d44e9a32a..b07b119ae57f 100644 --- a/drivers/char/nsc_gpio.c +++ b/drivers/char/nsc_gpio.c | |||
@@ -41,7 +41,7 @@ void nsc_gpio_dump(struct nsc_gpio_ops *amp, unsigned index) | |||
41 | ssize_t nsc_gpio_write(struct file *file, const char __user *data, | 41 | ssize_t nsc_gpio_write(struct file *file, const char __user *data, |
42 | size_t len, loff_t *ppos) | 42 | size_t len, loff_t *ppos) |
43 | { | 43 | { |
44 | unsigned m = iminor(file->f_path.dentry->d_inode); | 44 | unsigned m = iminor(file_inode(file)); |
45 | struct nsc_gpio_ops *amp = file->private_data; | 45 | struct nsc_gpio_ops *amp = file->private_data; |
46 | struct device *dev = amp->dev; | 46 | struct device *dev = amp->dev; |
47 | size_t i; | 47 | size_t i; |
@@ -104,7 +104,7 @@ ssize_t nsc_gpio_write(struct file *file, const char __user *data, | |||
104 | ssize_t nsc_gpio_read(struct file *file, char __user * buf, | 104 | ssize_t nsc_gpio_read(struct file *file, char __user * buf, |
105 | size_t len, loff_t * ppos) | 105 | size_t len, loff_t * ppos) |
106 | { | 106 | { |
107 | unsigned m = iminor(file->f_path.dentry->d_inode); | 107 | unsigned m = iminor(file_inode(file)); |
108 | int value; | 108 | int value; |
109 | struct nsc_gpio_ops *amp = file->private_data; | 109 | struct nsc_gpio_ops *amp = file->private_data; |
110 | 110 | ||
diff --git a/drivers/char/pcmcia/cm4000_cs.c b/drivers/char/pcmcia/cm4000_cs.c index a7584860e9a7..c115217c79ae 100644 --- a/drivers/char/pcmcia/cm4000_cs.c +++ b/drivers/char/pcmcia/cm4000_cs.c | |||
@@ -1400,7 +1400,7 @@ static long cmm_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) | |||
1400 | { | 1400 | { |
1401 | struct cm4000_dev *dev = filp->private_data; | 1401 | struct cm4000_dev *dev = filp->private_data; |
1402 | unsigned int iobase = dev->p_dev->resource[0]->start; | 1402 | unsigned int iobase = dev->p_dev->resource[0]->start; |
1403 | struct inode *inode = filp->f_path.dentry->d_inode; | 1403 | struct inode *inode = file_inode(filp); |
1404 | struct pcmcia_device *link; | 1404 | struct pcmcia_device *link; |
1405 | int size; | 1405 | int size; |
1406 | int rc; | 1406 | int rc; |
diff --git a/drivers/char/ppdev.c b/drivers/char/ppdev.c index 1cd49241e60e..ae0b42b66e55 100644 --- a/drivers/char/ppdev.c +++ b/drivers/char/ppdev.c | |||
@@ -107,7 +107,7 @@ static inline void pp_enable_irq (struct pp_struct *pp) | |||
107 | static ssize_t pp_read (struct file * file, char __user * buf, size_t count, | 107 | static ssize_t pp_read (struct file * file, char __user * buf, size_t count, |
108 | loff_t * ppos) | 108 | loff_t * ppos) |
109 | { | 109 | { |
110 | unsigned int minor = iminor(file->f_path.dentry->d_inode); | 110 | unsigned int minor = iminor(file_inode(file)); |
111 | struct pp_struct *pp = file->private_data; | 111 | struct pp_struct *pp = file->private_data; |
112 | char * kbuffer; | 112 | char * kbuffer; |
113 | ssize_t bytes_read = 0; | 113 | ssize_t bytes_read = 0; |
@@ -189,7 +189,7 @@ static ssize_t pp_read (struct file * file, char __user * buf, size_t count, | |||
189 | static ssize_t pp_write (struct file * file, const char __user * buf, | 189 | static ssize_t pp_write (struct file * file, const char __user * buf, |
190 | size_t count, loff_t * ppos) | 190 | size_t count, loff_t * ppos) |
191 | { | 191 | { |
192 | unsigned int minor = iminor(file->f_path.dentry->d_inode); | 192 | unsigned int minor = iminor(file_inode(file)); |
193 | struct pp_struct *pp = file->private_data; | 193 | struct pp_struct *pp = file->private_data; |
194 | char * kbuffer; | 194 | char * kbuffer; |
195 | ssize_t bytes_written = 0; | 195 | ssize_t bytes_written = 0; |
@@ -324,7 +324,7 @@ static enum ieee1284_phase init_phase (int mode) | |||
324 | 324 | ||
325 | static int pp_do_ioctl(struct file *file, unsigned int cmd, unsigned long arg) | 325 | static int pp_do_ioctl(struct file *file, unsigned int cmd, unsigned long arg) |
326 | { | 326 | { |
327 | unsigned int minor = iminor(file->f_path.dentry->d_inode); | 327 | unsigned int minor = iminor(file_inode(file)); |
328 | struct pp_struct *pp = file->private_data; | 328 | struct pp_struct *pp = file->private_data; |
329 | struct parport * port; | 329 | struct parport * port; |
330 | void __user *argp = (void __user *)arg; | 330 | void __user *argp = (void __user *)arg; |
diff --git a/drivers/char/ps3flash.c b/drivers/char/ps3flash.c index 588063ac9517..8cafa9ccd43f 100644 --- a/drivers/char/ps3flash.c +++ b/drivers/char/ps3flash.c | |||
@@ -312,7 +312,7 @@ static int ps3flash_flush(struct file *file, fl_owner_t id) | |||
312 | 312 | ||
313 | static int ps3flash_fsync(struct file *file, loff_t start, loff_t end, int datasync) | 313 | static int ps3flash_fsync(struct file *file, loff_t start, loff_t end, int datasync) |
314 | { | 314 | { |
315 | struct inode *inode = file->f_path.dentry->d_inode; | 315 | struct inode *inode = file_inode(file); |
316 | int err; | 316 | int err; |
317 | mutex_lock(&inode->i_mutex); | 317 | mutex_lock(&inode->i_mutex); |
318 | err = ps3flash_writeback(ps3flash_dev); | 318 | err = ps3flash_writeback(ps3flash_dev); |
diff --git a/drivers/char/raw.c b/drivers/char/raw.c index 54a3a6d09819..f3223aac4df1 100644 --- a/drivers/char/raw.c +++ b/drivers/char/raw.c | |||
@@ -80,7 +80,7 @@ static int raw_open(struct inode *inode, struct file *filp) | |||
80 | filp->f_flags |= O_DIRECT; | 80 | filp->f_flags |= O_DIRECT; |
81 | filp->f_mapping = bdev->bd_inode->i_mapping; | 81 | filp->f_mapping = bdev->bd_inode->i_mapping; |
82 | if (++raw_devices[minor].inuse == 1) | 82 | if (++raw_devices[minor].inuse == 1) |
83 | filp->f_path.dentry->d_inode->i_mapping = | 83 | file_inode(filp)->i_mapping = |
84 | bdev->bd_inode->i_mapping; | 84 | bdev->bd_inode->i_mapping; |
85 | filp->private_data = bdev; | 85 | filp->private_data = bdev; |
86 | mutex_unlock(&raw_mutex); | 86 | mutex_unlock(&raw_mutex); |
diff --git a/drivers/char/sonypi.c b/drivers/char/sonypi.c index 6386a98e43c1..bf2349dbbf7f 100644 --- a/drivers/char/sonypi.c +++ b/drivers/char/sonypi.c | |||
@@ -938,7 +938,7 @@ static ssize_t sonypi_misc_read(struct file *file, char __user *buf, | |||
938 | } | 938 | } |
939 | 939 | ||
940 | if (ret > 0) { | 940 | if (ret > 0) { |
941 | struct inode *inode = file->f_path.dentry->d_inode; | 941 | struct inode *inode = file_inode(file); |
942 | inode->i_atime = current_fs_time(inode->i_sb); | 942 | inode->i_atime = current_fs_time(inode->i_sb); |
943 | } | 943 | } |
944 | 944 | ||
diff --git a/drivers/char/tb0219.c b/drivers/char/tb0219.c index 34c63f85104d..47b9fdfcf083 100644 --- a/drivers/char/tb0219.c +++ b/drivers/char/tb0219.c | |||
@@ -164,7 +164,7 @@ static ssize_t tanbac_tb0219_read(struct file *file, char __user *buf, size_t le | |||
164 | unsigned int minor; | 164 | unsigned int minor; |
165 | char value; | 165 | char value; |
166 | 166 | ||
167 | minor = iminor(file->f_path.dentry->d_inode); | 167 | minor = iminor(file_inode(file)); |
168 | switch (minor) { | 168 | switch (minor) { |
169 | case 0: | 169 | case 0: |
170 | value = get_led(); | 170 | value = get_led(); |
@@ -200,7 +200,7 @@ static ssize_t tanbac_tb0219_write(struct file *file, const char __user *data, | |||
200 | int retval = 0; | 200 | int retval = 0; |
201 | char c; | 201 | char c; |
202 | 202 | ||
203 | minor = iminor(file->f_path.dentry->d_inode); | 203 | minor = iminor(file_inode(file)); |
204 | switch (minor) { | 204 | switch (minor) { |
205 | case 0: | 205 | case 0: |
206 | type = TYPE_LED; | 206 | type = TYPE_LED; |
diff --git a/drivers/gpu/drm/gma500/gtt.c b/drivers/gpu/drm/gma500/gtt.c index 04a371aceb34..054e26e769ec 100644 --- a/drivers/gpu/drm/gma500/gtt.c +++ b/drivers/gpu/drm/gma500/gtt.c | |||
@@ -202,7 +202,7 @@ static int psb_gtt_attach_pages(struct gtt_range *gt) | |||
202 | WARN_ON(gt->pages); | 202 | WARN_ON(gt->pages); |
203 | 203 | ||
204 | /* This is the shared memory object that backs the GEM resource */ | 204 | /* This is the shared memory object that backs the GEM resource */ |
205 | inode = gt->gem.filp->f_path.dentry->d_inode; | 205 | inode = file_inode(gt->gem.filp); |
206 | mapping = inode->i_mapping; | 206 | mapping = inode->i_mapping; |
207 | 207 | ||
208 | gt->pages = kmalloc(pages * sizeof(struct page *), GFP_KERNEL); | 208 | gt->pages = kmalloc(pages * sizeof(struct page *), GFP_KERNEL); |
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index 8413ffced815..0e207e6e0df8 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c | |||
@@ -1618,7 +1618,7 @@ i915_gem_object_truncate(struct drm_i915_gem_object *obj) | |||
1618 | * To do this we must instruct the shmfs to drop all of its | 1618 | * To do this we must instruct the shmfs to drop all of its |
1619 | * backing pages, *now*. | 1619 | * backing pages, *now*. |
1620 | */ | 1620 | */ |
1621 | inode = obj->base.filp->f_path.dentry->d_inode; | 1621 | inode = file_inode(obj->base.filp); |
1622 | shmem_truncate_range(inode, 0, (loff_t)-1); | 1622 | shmem_truncate_range(inode, 0, (loff_t)-1); |
1623 | 1623 | ||
1624 | obj->madv = __I915_MADV_PURGED; | 1624 | obj->madv = __I915_MADV_PURGED; |
@@ -1783,7 +1783,7 @@ i915_gem_object_get_pages_gtt(struct drm_i915_gem_object *obj) | |||
1783 | * | 1783 | * |
1784 | * Fail silently without starting the shrinker | 1784 | * Fail silently without starting the shrinker |
1785 | */ | 1785 | */ |
1786 | mapping = obj->base.filp->f_path.dentry->d_inode->i_mapping; | 1786 | mapping = file_inode(obj->base.filp)->i_mapping; |
1787 | gfp = mapping_gfp_mask(mapping); | 1787 | gfp = mapping_gfp_mask(mapping); |
1788 | gfp |= __GFP_NORETRY | __GFP_NOWARN | __GFP_NO_KSWAPD; | 1788 | gfp |= __GFP_NORETRY | __GFP_NOWARN | __GFP_NO_KSWAPD; |
1789 | gfp &= ~(__GFP_IO | __GFP_WAIT); | 1789 | gfp &= ~(__GFP_IO | __GFP_WAIT); |
@@ -3747,7 +3747,7 @@ struct drm_i915_gem_object *i915_gem_alloc_object(struct drm_device *dev, | |||
3747 | mask |= __GFP_DMA32; | 3747 | mask |= __GFP_DMA32; |
3748 | } | 3748 | } |
3749 | 3749 | ||
3750 | mapping = obj->base.filp->f_path.dentry->d_inode->i_mapping; | 3750 | mapping = file_inode(obj->base.filp)->i_mapping; |
3751 | mapping_set_gfp_mask(mapping, mask); | 3751 | mapping_set_gfp_mask(mapping, mask); |
3752 | 3752 | ||
3753 | i915_gem_object_init(obj, &i915_gem_object_ops); | 3753 | i915_gem_object_init(obj, &i915_gem_object_ops); |
@@ -4232,7 +4232,7 @@ void i915_gem_free_all_phys_object(struct drm_device *dev) | |||
4232 | void i915_gem_detach_phys_object(struct drm_device *dev, | 4232 | void i915_gem_detach_phys_object(struct drm_device *dev, |
4233 | struct drm_i915_gem_object *obj) | 4233 | struct drm_i915_gem_object *obj) |
4234 | { | 4234 | { |
4235 | struct address_space *mapping = obj->base.filp->f_path.dentry->d_inode->i_mapping; | 4235 | struct address_space *mapping = file_inode(obj->base.filp)->i_mapping; |
4236 | char *vaddr; | 4236 | char *vaddr; |
4237 | int i; | 4237 | int i; |
4238 | int page_count; | 4238 | int page_count; |
@@ -4268,7 +4268,7 @@ i915_gem_attach_phys_object(struct drm_device *dev, | |||
4268 | int id, | 4268 | int id, |
4269 | int align) | 4269 | int align) |
4270 | { | 4270 | { |
4271 | struct address_space *mapping = obj->base.filp->f_path.dentry->d_inode->i_mapping; | 4271 | struct address_space *mapping = file_inode(obj->base.filp)->i_mapping; |
4272 | drm_i915_private_t *dev_priv = dev->dev_private; | 4272 | drm_i915_private_t *dev_priv = dev->dev_private; |
4273 | int ret = 0; | 4273 | int ret = 0; |
4274 | int page_count; | 4274 | int page_count; |
diff --git a/drivers/gpu/drm/omapdrm/omap_gem_helpers.c b/drivers/gpu/drm/omapdrm/omap_gem_helpers.c index e4a66a35fc6a..f9eb679eb79b 100644 --- a/drivers/gpu/drm/omapdrm/omap_gem_helpers.c +++ b/drivers/gpu/drm/omapdrm/omap_gem_helpers.c | |||
@@ -40,7 +40,7 @@ struct page **_drm_gem_get_pages(struct drm_gem_object *obj, gfp_t gfpmask) | |||
40 | int i, npages; | 40 | int i, npages; |
41 | 41 | ||
42 | /* This is the shared memory object that backs the GEM resource */ | 42 | /* This is the shared memory object that backs the GEM resource */ |
43 | inode = obj->filp->f_path.dentry->d_inode; | 43 | inode = file_inode(obj->filp); |
44 | mapping = inode->i_mapping; | 44 | mapping = inode->i_mapping; |
45 | 45 | ||
46 | npages = obj->size >> PAGE_SHIFT; | 46 | npages = obj->size >> PAGE_SHIFT; |
diff --git a/drivers/gpu/drm/ttm/ttm_tt.c b/drivers/gpu/drm/ttm/ttm_tt.c index 7d759a430294..5e93a52d4f2c 100644 --- a/drivers/gpu/drm/ttm/ttm_tt.c +++ b/drivers/gpu/drm/ttm/ttm_tt.c | |||
@@ -296,7 +296,7 @@ int ttm_tt_swapin(struct ttm_tt *ttm) | |||
296 | swap_storage = ttm->swap_storage; | 296 | swap_storage = ttm->swap_storage; |
297 | BUG_ON(swap_storage == NULL); | 297 | BUG_ON(swap_storage == NULL); |
298 | 298 | ||
299 | swap_space = swap_storage->f_path.dentry->d_inode->i_mapping; | 299 | swap_space = file_inode(swap_storage)->i_mapping; |
300 | 300 | ||
301 | for (i = 0; i < ttm->num_pages; ++i) { | 301 | for (i = 0; i < ttm->num_pages; ++i) { |
302 | from_page = shmem_read_mapping_page(swap_space, i); | 302 | from_page = shmem_read_mapping_page(swap_space, i); |
@@ -345,7 +345,7 @@ int ttm_tt_swapout(struct ttm_tt *ttm, struct file *persistent_swap_storage) | |||
345 | } else | 345 | } else |
346 | swap_storage = persistent_swap_storage; | 346 | swap_storage = persistent_swap_storage; |
347 | 347 | ||
348 | swap_space = swap_storage->f_path.dentry->d_inode->i_mapping; | 348 | swap_space = file_inode(swap_storage)->i_mapping; |
349 | 349 | ||
350 | for (i = 0; i < ttm->num_pages; ++i) { | 350 | for (i = 0; i < ttm->num_pages; ++i) { |
351 | from_page = ttm->pages[i]; | 351 | from_page = ttm->pages[i]; |
diff --git a/drivers/gpu/drm/udl/udl_gem.c b/drivers/gpu/drm/udl/udl_gem.c index afd212c99216..3816270ba49b 100644 --- a/drivers/gpu/drm/udl/udl_gem.c +++ b/drivers/gpu/drm/udl/udl_gem.c | |||
@@ -137,7 +137,7 @@ static int udl_gem_get_pages(struct udl_gem_object *obj, gfp_t gfpmask) | |||
137 | if (obj->pages == NULL) | 137 | if (obj->pages == NULL) |
138 | return -ENOMEM; | 138 | return -ENOMEM; |
139 | 139 | ||
140 | inode = obj->base.filp->f_path.dentry->d_inode; | 140 | inode = file_inode(obj->base.filp); |
141 | mapping = inode->i_mapping; | 141 | mapping = inode->i_mapping; |
142 | gfpmask |= mapping_gfp_mask(mapping); | 142 | gfpmask |= mapping_gfp_mask(mapping); |
143 | 143 | ||
diff --git a/drivers/hid/hid-roccat.c b/drivers/hid/hid-roccat.c index b685b04dbf9d..d7437ef5c695 100644 --- a/drivers/hid/hid-roccat.c +++ b/drivers/hid/hid-roccat.c | |||
@@ -378,7 +378,7 @@ EXPORT_SYMBOL_GPL(roccat_disconnect); | |||
378 | 378 | ||
379 | static long roccat_ioctl(struct file *file, unsigned int cmd, unsigned long arg) | 379 | static long roccat_ioctl(struct file *file, unsigned int cmd, unsigned long arg) |
380 | { | 380 | { |
381 | struct inode *inode = file->f_path.dentry->d_inode; | 381 | struct inode *inode = file_inode(file); |
382 | struct roccat_device *device; | 382 | struct roccat_device *device; |
383 | unsigned int minor = iminor(inode); | 383 | unsigned int minor = iminor(inode); |
384 | long retval = 0; | 384 | long retval = 0; |
diff --git a/drivers/hid/hidraw.c b/drivers/hid/hidraw.c index f3bbbce8353b..a7451632ceb4 100644 --- a/drivers/hid/hidraw.c +++ b/drivers/hid/hidraw.c | |||
@@ -108,7 +108,7 @@ out: | |||
108 | * This function is to be called with the minors_lock mutex held */ | 108 | * This function is to be called with the minors_lock mutex held */ |
109 | static ssize_t hidraw_send_report(struct file *file, const char __user *buffer, size_t count, unsigned char report_type) | 109 | static ssize_t hidraw_send_report(struct file *file, const char __user *buffer, size_t count, unsigned char report_type) |
110 | { | 110 | { |
111 | unsigned int minor = iminor(file->f_path.dentry->d_inode); | 111 | unsigned int minor = iminor(file_inode(file)); |
112 | struct hid_device *dev; | 112 | struct hid_device *dev; |
113 | __u8 *buf; | 113 | __u8 *buf; |
114 | int ret = 0; | 114 | int ret = 0; |
@@ -176,7 +176,7 @@ static ssize_t hidraw_write(struct file *file, const char __user *buffer, size_t | |||
176 | * mutex held. */ | 176 | * mutex held. */ |
177 | static ssize_t hidraw_get_report(struct file *file, char __user *buffer, size_t count, unsigned char report_type) | 177 | static ssize_t hidraw_get_report(struct file *file, char __user *buffer, size_t count, unsigned char report_type) |
178 | { | 178 | { |
179 | unsigned int minor = iminor(file->f_path.dentry->d_inode); | 179 | unsigned int minor = iminor(file_inode(file)); |
180 | struct hid_device *dev; | 180 | struct hid_device *dev; |
181 | __u8 *buf; | 181 | __u8 *buf; |
182 | int ret = 0, len; | 182 | int ret = 0, len; |
@@ -340,7 +340,7 @@ unlock: | |||
340 | static long hidraw_ioctl(struct file *file, unsigned int cmd, | 340 | static long hidraw_ioctl(struct file *file, unsigned int cmd, |
341 | unsigned long arg) | 341 | unsigned long arg) |
342 | { | 342 | { |
343 | struct inode *inode = file->f_path.dentry->d_inode; | 343 | struct inode *inode = file_inode(file); |
344 | unsigned int minor = iminor(inode); | 344 | unsigned int minor = iminor(inode); |
345 | long ret = 0; | 345 | long ret = 0; |
346 | struct hidraw *dev; | 346 | struct hidraw *dev; |
diff --git a/drivers/i2c/i2c-dev.c b/drivers/i2c/i2c-dev.c index 5ec2261574ec..c3ccdea3d180 100644 --- a/drivers/i2c/i2c-dev.c +++ b/drivers/i2c/i2c-dev.c | |||
@@ -148,7 +148,7 @@ static ssize_t i2cdev_read(struct file *file, char __user *buf, size_t count, | |||
148 | return -ENOMEM; | 148 | return -ENOMEM; |
149 | 149 | ||
150 | pr_debug("i2c-dev: i2c-%d reading %zu bytes.\n", | 150 | pr_debug("i2c-dev: i2c-%d reading %zu bytes.\n", |
151 | iminor(file->f_path.dentry->d_inode), count); | 151 | iminor(file_inode(file)), count); |
152 | 152 | ||
153 | ret = i2c_master_recv(client, tmp, count); | 153 | ret = i2c_master_recv(client, tmp, count); |
154 | if (ret >= 0) | 154 | if (ret >= 0) |
@@ -172,7 +172,7 @@ static ssize_t i2cdev_write(struct file *file, const char __user *buf, | |||
172 | return PTR_ERR(tmp); | 172 | return PTR_ERR(tmp); |
173 | 173 | ||
174 | pr_debug("i2c-dev: i2c-%d writing %zu bytes.\n", | 174 | pr_debug("i2c-dev: i2c-%d writing %zu bytes.\n", |
175 | iminor(file->f_path.dentry->d_inode), count); | 175 | iminor(file_inode(file)), count); |
176 | 176 | ||
177 | ret = i2c_master_send(client, tmp, count); | 177 | ret = i2c_master_send(client, tmp, count); |
178 | kfree(tmp); | 178 | kfree(tmp); |
diff --git a/drivers/ide/ide-proc.c b/drivers/ide/ide-proc.c index a3133d7b2a0c..2abcc4790f12 100644 --- a/drivers/ide/ide-proc.c +++ b/drivers/ide/ide-proc.c | |||
@@ -333,7 +333,7 @@ static int ide_settings_proc_open(struct inode *inode, struct file *file) | |||
333 | static ssize_t ide_settings_proc_write(struct file *file, const char __user *buffer, | 333 | static ssize_t ide_settings_proc_write(struct file *file, const char __user *buffer, |
334 | size_t count, loff_t *pos) | 334 | size_t count, loff_t *pos) |
335 | { | 335 | { |
336 | ide_drive_t *drive = (ide_drive_t *) PDE(file->f_path.dentry->d_inode)->data; | 336 | ide_drive_t *drive = (ide_drive_t *) PDE(file_inode(file))->data; |
337 | char name[MAX_LEN + 1]; | 337 | char name[MAX_LEN + 1]; |
338 | int for_real = 0, mul_factor, div_factor; | 338 | int for_real = 0, mul_factor, div_factor; |
339 | unsigned long n; | 339 | unsigned long n; |
@@ -558,7 +558,7 @@ static int ide_replace_subdriver(ide_drive_t *drive, const char *driver) | |||
558 | static ssize_t ide_driver_proc_write(struct file *file, const char __user *buffer, | 558 | static ssize_t ide_driver_proc_write(struct file *file, const char __user *buffer, |
559 | size_t count, loff_t *pos) | 559 | size_t count, loff_t *pos) |
560 | { | 560 | { |
561 | ide_drive_t *drive = (ide_drive_t *) PDE(file->f_path.dentry->d_inode)->data; | 561 | ide_drive_t *drive = (ide_drive_t *) PDE(file_inode(file))->data; |
562 | char name[32]; | 562 | char name[32]; |
563 | 563 | ||
564 | if (!capable(CAP_SYS_ADMIN)) | 564 | if (!capable(CAP_SYS_ADMIN)) |
diff --git a/drivers/infiniband/core/uverbs_cmd.c b/drivers/infiniband/core/uverbs_cmd.c index 3983a0552775..e71d834c922a 100644 --- a/drivers/infiniband/core/uverbs_cmd.c +++ b/drivers/infiniband/core/uverbs_cmd.c | |||
@@ -731,7 +731,7 @@ ssize_t ib_uverbs_open_xrcd(struct ib_uverbs_file *file, | |||
731 | goto err_tree_mutex_unlock; | 731 | goto err_tree_mutex_unlock; |
732 | } | 732 | } |
733 | 733 | ||
734 | inode = f.file->f_path.dentry->d_inode; | 734 | inode = file_inode(f.file); |
735 | xrcd = find_xrcd(file->device, inode); | 735 | xrcd = find_xrcd(file->device, inode); |
736 | if (!xrcd && !(cmd.oflags & O_CREAT)) { | 736 | if (!xrcd && !(cmd.oflags & O_CREAT)) { |
737 | /* no file descriptor. Need CREATE flag */ | 737 | /* no file descriptor. Need CREATE flag */ |
diff --git a/drivers/infiniband/hw/ipath/ipath_file_ops.c b/drivers/infiniband/hw/ipath/ipath_file_ops.c index 3eb7e454849b..aed8afee56da 100644 --- a/drivers/infiniband/hw/ipath/ipath_file_ops.c +++ b/drivers/infiniband/hw/ipath/ipath_file_ops.c | |||
@@ -1864,9 +1864,9 @@ static int ipath_assign_port(struct file *fp, | |||
1864 | goto done_chk_sdma; | 1864 | goto done_chk_sdma; |
1865 | } | 1865 | } |
1866 | 1866 | ||
1867 | i_minor = iminor(fp->f_path.dentry->d_inode) - IPATH_USER_MINOR_BASE; | 1867 | i_minor = iminor(file_inode(fp)) - IPATH_USER_MINOR_BASE; |
1868 | ipath_cdbg(VERBOSE, "open on dev %lx (minor %d)\n", | 1868 | ipath_cdbg(VERBOSE, "open on dev %lx (minor %d)\n", |
1869 | (long)fp->f_path.dentry->d_inode->i_rdev, i_minor); | 1869 | (long)file_inode(fp)->i_rdev, i_minor); |
1870 | 1870 | ||
1871 | if (i_minor) | 1871 | if (i_minor) |
1872 | ret = find_free_port(i_minor - 1, fp, uinfo); | 1872 | ret = find_free_port(i_minor - 1, fp, uinfo); |
diff --git a/drivers/infiniband/hw/ipath/ipath_fs.c b/drivers/infiniband/hw/ipath/ipath_fs.c index a4de9d58e9b4..a479375a8fd8 100644 --- a/drivers/infiniband/hw/ipath/ipath_fs.c +++ b/drivers/infiniband/hw/ipath/ipath_fs.c | |||
@@ -113,7 +113,7 @@ static ssize_t atomic_counters_read(struct file *file, char __user *buf, | |||
113 | struct infinipath_counters counters; | 113 | struct infinipath_counters counters; |
114 | struct ipath_devdata *dd; | 114 | struct ipath_devdata *dd; |
115 | 115 | ||
116 | dd = file->f_path.dentry->d_inode->i_private; | 116 | dd = file_inode(file)->i_private; |
117 | dd->ipath_f_read_counters(dd, &counters); | 117 | dd->ipath_f_read_counters(dd, &counters); |
118 | 118 | ||
119 | return simple_read_from_buffer(buf, count, ppos, &counters, | 119 | return simple_read_from_buffer(buf, count, ppos, &counters, |
@@ -154,7 +154,7 @@ static ssize_t flash_read(struct file *file, char __user *buf, | |||
154 | goto bail; | 154 | goto bail; |
155 | } | 155 | } |
156 | 156 | ||
157 | dd = file->f_path.dentry->d_inode->i_private; | 157 | dd = file_inode(file)->i_private; |
158 | if (ipath_eeprom_read(dd, pos, tmp, count)) { | 158 | if (ipath_eeprom_read(dd, pos, tmp, count)) { |
159 | ipath_dev_err(dd, "failed to read from flash\n"); | 159 | ipath_dev_err(dd, "failed to read from flash\n"); |
160 | ret = -ENXIO; | 160 | ret = -ENXIO; |
@@ -207,7 +207,7 @@ static ssize_t flash_write(struct file *file, const char __user *buf, | |||
207 | goto bail_tmp; | 207 | goto bail_tmp; |
208 | } | 208 | } |
209 | 209 | ||
210 | dd = file->f_path.dentry->d_inode->i_private; | 210 | dd = file_inode(file)->i_private; |
211 | if (ipath_eeprom_write(dd, pos, tmp, count)) { | 211 | if (ipath_eeprom_write(dd, pos, tmp, count)) { |
212 | ret = -ENXIO; | 212 | ret = -ENXIO; |
213 | ipath_dev_err(dd, "failed to write to flash\n"); | 213 | ipath_dev_err(dd, "failed to write to flash\n"); |
diff --git a/drivers/infiniband/hw/qib/qib_file_ops.c b/drivers/infiniband/hw/qib/qib_file_ops.c index 959a5c4ff812..4f7aa301b3b1 100644 --- a/drivers/infiniband/hw/qib/qib_file_ops.c +++ b/drivers/infiniband/hw/qib/qib_file_ops.c | |||
@@ -1524,7 +1524,7 @@ static int qib_assign_ctxt(struct file *fp, const struct qib_user_info *uinfo) | |||
1524 | } | 1524 | } |
1525 | } | 1525 | } |
1526 | 1526 | ||
1527 | i_minor = iminor(fp->f_dentry->d_inode) - QIB_USER_MINOR_BASE; | 1527 | i_minor = iminor(file_inode(fp)) - QIB_USER_MINOR_BASE; |
1528 | if (i_minor) | 1528 | if (i_minor) |
1529 | ret = find_free_ctxt(i_minor - 1, fp, uinfo); | 1529 | ret = find_free_ctxt(i_minor - 1, fp, uinfo); |
1530 | else | 1530 | else |
diff --git a/drivers/infiniband/hw/qib/qib_fs.c b/drivers/infiniband/hw/qib/qib_fs.c index 65a2a23f6f8a..644bd6f6467c 100644 --- a/drivers/infiniband/hw/qib/qib_fs.c +++ b/drivers/infiniband/hw/qib/qib_fs.c | |||
@@ -45,7 +45,7 @@ | |||
45 | 45 | ||
46 | static struct super_block *qib_super; | 46 | static struct super_block *qib_super; |
47 | 47 | ||
48 | #define private2dd(file) ((file)->f_dentry->d_inode->i_private) | 48 | #define private2dd(file) (file_inode(file)->i_private) |
49 | 49 | ||
50 | static int qibfs_mknod(struct inode *dir, struct dentry *dentry, | 50 | static int qibfs_mknod(struct inode *dir, struct dentry *dentry, |
51 | umode_t mode, const struct file_operations *fops, | 51 | umode_t mode, const struct file_operations *fops, |
@@ -171,7 +171,7 @@ static const struct file_operations cntr_ops[] = { | |||
171 | }; | 171 | }; |
172 | 172 | ||
173 | /* | 173 | /* |
174 | * Could use file->f_dentry->d_inode->i_ino to figure out which file, | 174 | * Could use file_inode(file)->i_ino to figure out which file, |
175 | * instead of separate routine for each, but for now, this works... | 175 | * instead of separate routine for each, but for now, this works... |
176 | */ | 176 | */ |
177 | 177 | ||
diff --git a/drivers/iommu/tegra-smmu.c b/drivers/iommu/tegra-smmu.c index eb0109f98946..b34e5fd7fd9e 100644 --- a/drivers/iommu/tegra-smmu.c +++ b/drivers/iommu/tegra-smmu.c | |||
@@ -968,7 +968,6 @@ static ssize_t smmu_debugfs_stats_write(struct file *file, | |||
968 | { | 968 | { |
969 | struct smmu_debugfs_info *info; | 969 | struct smmu_debugfs_info *info; |
970 | struct smmu_device *smmu; | 970 | struct smmu_device *smmu; |
971 | struct dentry *dent; | ||
972 | int i; | 971 | int i; |
973 | enum { | 972 | enum { |
974 | _OFF = 0, | 973 | _OFF = 0, |
@@ -996,8 +995,7 @@ static ssize_t smmu_debugfs_stats_write(struct file *file, | |||
996 | if (i == ARRAY_SIZE(command)) | 995 | if (i == ARRAY_SIZE(command)) |
997 | return -EINVAL; | 996 | return -EINVAL; |
998 | 997 | ||
999 | dent = file->f_dentry; | 998 | info = file_inode(file)->i_private; |
1000 | info = dent->d_inode->i_private; | ||
1001 | smmu = info->smmu; | 999 | smmu = info->smmu; |
1002 | 1000 | ||
1003 | offs = SMMU_CACHE_CONFIG(info->cache); | 1001 | offs = SMMU_CACHE_CONFIG(info->cache); |
@@ -1032,15 +1030,11 @@ static ssize_t smmu_debugfs_stats_write(struct file *file, | |||
1032 | 1030 | ||
1033 | static int smmu_debugfs_stats_show(struct seq_file *s, void *v) | 1031 | static int smmu_debugfs_stats_show(struct seq_file *s, void *v) |
1034 | { | 1032 | { |
1035 | struct smmu_debugfs_info *info; | 1033 | struct smmu_debugfs_info *info = s->private; |
1036 | struct smmu_device *smmu; | 1034 | struct smmu_device *smmu = info->smmu; |
1037 | struct dentry *dent; | ||
1038 | int i; | 1035 | int i; |
1039 | const char * const stats[] = { "hit", "miss", }; | 1036 | const char * const stats[] = { "hit", "miss", }; |
1040 | 1037 | ||
1041 | dent = d_find_alias(s->private); | ||
1042 | info = dent->d_inode->i_private; | ||
1043 | smmu = info->smmu; | ||
1044 | 1038 | ||
1045 | for (i = 0; i < ARRAY_SIZE(stats); i++) { | 1039 | for (i = 0; i < ARRAY_SIZE(stats); i++) { |
1046 | u32 val; | 1040 | u32 val; |
@@ -1054,14 +1048,12 @@ static int smmu_debugfs_stats_show(struct seq_file *s, void *v) | |||
1054 | stats[i], val, offs); | 1048 | stats[i], val, offs); |
1055 | } | 1049 | } |
1056 | seq_printf(s, "\n"); | 1050 | seq_printf(s, "\n"); |
1057 | dput(dent); | ||
1058 | |||
1059 | return 0; | 1051 | return 0; |
1060 | } | 1052 | } |
1061 | 1053 | ||
1062 | static int smmu_debugfs_stats_open(struct inode *inode, struct file *file) | 1054 | static int smmu_debugfs_stats_open(struct inode *inode, struct file *file) |
1063 | { | 1055 | { |
1064 | return single_open(file, smmu_debugfs_stats_show, inode); | 1056 | return single_open(file, smmu_debugfs_stats_show, inode->i_private); |
1065 | } | 1057 | } |
1066 | 1058 | ||
1067 | static const struct file_operations smmu_debugfs_stats_fops = { | 1059 | static const struct file_operations smmu_debugfs_stats_fops = { |
diff --git a/drivers/isdn/hardware/eicon/divasproc.c b/drivers/isdn/hardware/eicon/divasproc.c index af4fd3d036c1..3a4165c61196 100644 --- a/drivers/isdn/hardware/eicon/divasproc.c +++ b/drivers/isdn/hardware/eicon/divasproc.c | |||
@@ -145,7 +145,7 @@ void remove_divas_proc(void) | |||
145 | static ssize_t grp_opt_proc_write(struct file *file, const char __user *buffer, | 145 | static ssize_t grp_opt_proc_write(struct file *file, const char __user *buffer, |
146 | size_t count, loff_t *pos) | 146 | size_t count, loff_t *pos) |
147 | { | 147 | { |
148 | diva_os_xdi_adapter_t *a = PDE(file->f_path.dentry->d_inode)->data; | 148 | diva_os_xdi_adapter_t *a = PDE(file_inode(file))->data; |
149 | PISDN_ADAPTER IoAdapter = IoAdapters[a->controller - 1]; | 149 | PISDN_ADAPTER IoAdapter = IoAdapters[a->controller - 1]; |
150 | 150 | ||
151 | if ((count == 1) || (count == 2)) { | 151 | if ((count == 1) || (count == 2)) { |
@@ -172,7 +172,7 @@ static ssize_t grp_opt_proc_write(struct file *file, const char __user *buffer, | |||
172 | static ssize_t d_l1_down_proc_write(struct file *file, const char __user *buffer, | 172 | static ssize_t d_l1_down_proc_write(struct file *file, const char __user *buffer, |
173 | size_t count, loff_t *pos) | 173 | size_t count, loff_t *pos) |
174 | { | 174 | { |
175 | diva_os_xdi_adapter_t *a = PDE(file->f_path.dentry->d_inode)->data; | 175 | diva_os_xdi_adapter_t *a = PDE(file_inode(file))->data; |
176 | PISDN_ADAPTER IoAdapter = IoAdapters[a->controller - 1]; | 176 | PISDN_ADAPTER IoAdapter = IoAdapters[a->controller - 1]; |
177 | 177 | ||
178 | if ((count == 1) || (count == 2)) { | 178 | if ((count == 1) || (count == 2)) { |
@@ -251,7 +251,7 @@ static const struct file_operations grp_opt_proc_fops = { | |||
251 | static ssize_t info_proc_write(struct file *file, const char __user *buffer, | 251 | static ssize_t info_proc_write(struct file *file, const char __user *buffer, |
252 | size_t count, loff_t *pos) | 252 | size_t count, loff_t *pos) |
253 | { | 253 | { |
254 | diva_os_xdi_adapter_t *a = PDE(file->f_path.dentry->d_inode)->data; | 254 | diva_os_xdi_adapter_t *a = PDE(file_inode(file))->data; |
255 | PISDN_ADAPTER IoAdapter = IoAdapters[a->controller - 1]; | 255 | PISDN_ADAPTER IoAdapter = IoAdapters[a->controller - 1]; |
256 | char c[4]; | 256 | char c[4]; |
257 | 257 | ||
diff --git a/drivers/isdn/hysdn/hysdn_proclog.c b/drivers/isdn/hysdn/hysdn_proclog.c index 88e4f0ee073c..9a3ce93665c5 100644 --- a/drivers/isdn/hysdn/hysdn_proclog.c +++ b/drivers/isdn/hysdn/hysdn_proclog.c | |||
@@ -173,7 +173,7 @@ hysdn_log_read(struct file *file, char __user *buf, size_t count, loff_t *off) | |||
173 | { | 173 | { |
174 | struct log_data *inf; | 174 | struct log_data *inf; |
175 | int len; | 175 | int len; |
176 | struct proc_dir_entry *pde = PDE(file->f_path.dentry->d_inode); | 176 | struct proc_dir_entry *pde = PDE(file_inode(file)); |
177 | struct procdata *pd = NULL; | 177 | struct procdata *pd = NULL; |
178 | hysdn_card *card; | 178 | hysdn_card *card; |
179 | 179 | ||
@@ -319,7 +319,7 @@ static unsigned int | |||
319 | hysdn_log_poll(struct file *file, poll_table *wait) | 319 | hysdn_log_poll(struct file *file, poll_table *wait) |
320 | { | 320 | { |
321 | unsigned int mask = 0; | 321 | unsigned int mask = 0; |
322 | struct proc_dir_entry *pde = PDE(file->f_path.dentry->d_inode); | 322 | struct proc_dir_entry *pde = PDE(file_inode(file)); |
323 | hysdn_card *card; | 323 | hysdn_card *card; |
324 | struct procdata *pd = NULL; | 324 | struct procdata *pd = NULL; |
325 | 325 | ||
diff --git a/drivers/isdn/i4l/isdn_common.c b/drivers/isdn/i4l/isdn_common.c index b87d9e577be2..9bb12ba3191f 100644 --- a/drivers/isdn/i4l/isdn_common.c +++ b/drivers/isdn/i4l/isdn_common.c | |||
@@ -1058,7 +1058,7 @@ isdn_info_update(void) | |||
1058 | static ssize_t | 1058 | static ssize_t |
1059 | isdn_read(struct file *file, char __user *buf, size_t count, loff_t *off) | 1059 | isdn_read(struct file *file, char __user *buf, size_t count, loff_t *off) |
1060 | { | 1060 | { |
1061 | uint minor = iminor(file->f_path.dentry->d_inode); | 1061 | uint minor = iminor(file_inode(file)); |
1062 | int len = 0; | 1062 | int len = 0; |
1063 | int drvidx; | 1063 | int drvidx; |
1064 | int chidx; | 1064 | int chidx; |
@@ -1165,7 +1165,7 @@ out: | |||
1165 | static ssize_t | 1165 | static ssize_t |
1166 | isdn_write(struct file *file, const char __user *buf, size_t count, loff_t *off) | 1166 | isdn_write(struct file *file, const char __user *buf, size_t count, loff_t *off) |
1167 | { | 1167 | { |
1168 | uint minor = iminor(file->f_path.dentry->d_inode); | 1168 | uint minor = iminor(file_inode(file)); |
1169 | int drvidx; | 1169 | int drvidx; |
1170 | int chidx; | 1170 | int chidx; |
1171 | int retval; | 1171 | int retval; |
@@ -1228,7 +1228,7 @@ static unsigned int | |||
1228 | isdn_poll(struct file *file, poll_table *wait) | 1228 | isdn_poll(struct file *file, poll_table *wait) |
1229 | { | 1229 | { |
1230 | unsigned int mask = 0; | 1230 | unsigned int mask = 0; |
1231 | unsigned int minor = iminor(file->f_path.dentry->d_inode); | 1231 | unsigned int minor = iminor(file_inode(file)); |
1232 | int drvidx = isdn_minor2drv(minor - ISDN_MINOR_CTRL); | 1232 | int drvidx = isdn_minor2drv(minor - ISDN_MINOR_CTRL); |
1233 | 1233 | ||
1234 | mutex_lock(&isdn_mutex); | 1234 | mutex_lock(&isdn_mutex); |
@@ -1269,7 +1269,7 @@ out: | |||
1269 | static int | 1269 | static int |
1270 | isdn_ioctl(struct file *file, uint cmd, ulong arg) | 1270 | isdn_ioctl(struct file *file, uint cmd, ulong arg) |
1271 | { | 1271 | { |
1272 | uint minor = iminor(file->f_path.dentry->d_inode); | 1272 | uint minor = iminor(file_inode(file)); |
1273 | isdn_ctrl c; | 1273 | isdn_ctrl c; |
1274 | int drvidx; | 1274 | int drvidx; |
1275 | int ret; | 1275 | int ret; |
diff --git a/drivers/isdn/i4l/isdn_ppp.c b/drivers/isdn/i4l/isdn_ppp.c index 61d78fa03b1a..38ceac5053a0 100644 --- a/drivers/isdn/i4l/isdn_ppp.c +++ b/drivers/isdn/i4l/isdn_ppp.c | |||
@@ -668,7 +668,7 @@ isdn_ppp_poll(struct file *file, poll_table *wait) | |||
668 | 668 | ||
669 | if (is->debug & 0x2) | 669 | if (is->debug & 0x2) |
670 | printk(KERN_DEBUG "isdn_ppp_poll: minor: %d\n", | 670 | printk(KERN_DEBUG "isdn_ppp_poll: minor: %d\n", |
671 | iminor(file->f_path.dentry->d_inode)); | 671 | iminor(file_inode(file))); |
672 | 672 | ||
673 | /* just registers wait_queue hook. This doesn't really wait. */ | 673 | /* just registers wait_queue hook. This doesn't really wait. */ |
674 | poll_wait(file, &is->wq, wait); | 674 | poll_wait(file, &is->wq, wait); |
diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c index 7155945f8eb8..4fd9d6aeff6a 100644 --- a/drivers/md/bitmap.c +++ b/drivers/md/bitmap.c | |||
@@ -337,7 +337,7 @@ static int read_page(struct file *file, unsigned long index, | |||
337 | struct page *page) | 337 | struct page *page) |
338 | { | 338 | { |
339 | int ret = 0; | 339 | int ret = 0; |
340 | struct inode *inode = file->f_path.dentry->d_inode; | 340 | struct inode *inode = file_inode(file); |
341 | struct buffer_head *bh; | 341 | struct buffer_head *bh; |
342 | sector_t block; | 342 | sector_t block; |
343 | 343 | ||
@@ -755,7 +755,7 @@ static void bitmap_file_unmap(struct bitmap_storage *store) | |||
755 | free_buffers(sb_page); | 755 | free_buffers(sb_page); |
756 | 756 | ||
757 | if (file) { | 757 | if (file) { |
758 | struct inode *inode = file->f_path.dentry->d_inode; | 758 | struct inode *inode = file_inode(file); |
759 | invalidate_mapping_pages(inode->i_mapping, 0, -1); | 759 | invalidate_mapping_pages(inode->i_mapping, 0, -1); |
760 | fput(file); | 760 | fput(file); |
761 | } | 761 | } |
diff --git a/drivers/media/pci/zoran/zoran_procfs.c b/drivers/media/pci/zoran/zoran_procfs.c index f1423b777db1..e084b0a21b1b 100644 --- a/drivers/media/pci/zoran/zoran_procfs.c +++ b/drivers/media/pci/zoran/zoran_procfs.c | |||
@@ -137,7 +137,7 @@ static int zoran_open(struct inode *inode, struct file *file) | |||
137 | static ssize_t zoran_write(struct file *file, const char __user *buffer, | 137 | static ssize_t zoran_write(struct file *file, const char __user *buffer, |
138 | size_t count, loff_t *ppos) | 138 | size_t count, loff_t *ppos) |
139 | { | 139 | { |
140 | struct zoran *zr = PDE(file->f_path.dentry->d_inode)->data; | 140 | struct zoran *zr = PDE(file_inode(file))->data; |
141 | char *string, *sp; | 141 | char *string, *sp; |
142 | char *line, *ldelim, *varname, *svar, *tdelim; | 142 | char *line, *ldelim, *varname, *svar, *tdelim; |
143 | 143 | ||
diff --git a/drivers/media/rc/lirc_dev.c b/drivers/media/rc/lirc_dev.c index ca12d3289bfe..5247d94fea29 100644 --- a/drivers/media/rc/lirc_dev.c +++ b/drivers/media/rc/lirc_dev.c | |||
@@ -531,7 +531,7 @@ EXPORT_SYMBOL(lirc_dev_fop_close); | |||
531 | 531 | ||
532 | unsigned int lirc_dev_fop_poll(struct file *file, poll_table *wait) | 532 | unsigned int lirc_dev_fop_poll(struct file *file, poll_table *wait) |
533 | { | 533 | { |
534 | struct irctl *ir = irctls[iminor(file->f_dentry->d_inode)]; | 534 | struct irctl *ir = irctls[iminor(file_inode(file))]; |
535 | unsigned int ret; | 535 | unsigned int ret; |
536 | 536 | ||
537 | if (!ir) { | 537 | if (!ir) { |
@@ -565,7 +565,7 @@ long lirc_dev_fop_ioctl(struct file *file, unsigned int cmd, unsigned long arg) | |||
565 | { | 565 | { |
566 | __u32 mode; | 566 | __u32 mode; |
567 | int result = 0; | 567 | int result = 0; |
568 | struct irctl *ir = irctls[iminor(file->f_dentry->d_inode)]; | 568 | struct irctl *ir = irctls[iminor(file_inode(file))]; |
569 | 569 | ||
570 | if (!ir) { | 570 | if (!ir) { |
571 | printk(KERN_ERR "lirc_dev: %s: no irctl found!\n", __func__); | 571 | printk(KERN_ERR "lirc_dev: %s: no irctl found!\n", __func__); |
@@ -650,7 +650,7 @@ ssize_t lirc_dev_fop_read(struct file *file, | |||
650 | size_t length, | 650 | size_t length, |
651 | loff_t *ppos) | 651 | loff_t *ppos) |
652 | { | 652 | { |
653 | struct irctl *ir = irctls[iminor(file->f_dentry->d_inode)]; | 653 | struct irctl *ir = irctls[iminor(file_inode(file))]; |
654 | unsigned char *buf; | 654 | unsigned char *buf; |
655 | int ret = 0, written = 0; | 655 | int ret = 0, written = 0; |
656 | DECLARE_WAITQUEUE(wait, current); | 656 | DECLARE_WAITQUEUE(wait, current); |
@@ -752,16 +752,7 @@ EXPORT_SYMBOL(lirc_dev_fop_read); | |||
752 | 752 | ||
753 | void *lirc_get_pdata(struct file *file) | 753 | void *lirc_get_pdata(struct file *file) |
754 | { | 754 | { |
755 | void *data = NULL; | 755 | return irctls[iminor(file_inode(file))]->d.data; |
756 | |||
757 | if (file && file->f_dentry && file->f_dentry->d_inode && | ||
758 | file->f_dentry->d_inode->i_rdev) { | ||
759 | struct irctl *ir; | ||
760 | ir = irctls[iminor(file->f_dentry->d_inode)]; | ||
761 | data = ir->d.data; | ||
762 | } | ||
763 | |||
764 | return data; | ||
765 | } | 756 | } |
766 | EXPORT_SYMBOL(lirc_get_pdata); | 757 | EXPORT_SYMBOL(lirc_get_pdata); |
767 | 758 | ||
@@ -769,7 +760,7 @@ EXPORT_SYMBOL(lirc_get_pdata); | |||
769 | ssize_t lirc_dev_fop_write(struct file *file, const char __user *buffer, | 760 | ssize_t lirc_dev_fop_write(struct file *file, const char __user *buffer, |
770 | size_t length, loff_t *ppos) | 761 | size_t length, loff_t *ppos) |
771 | { | 762 | { |
772 | struct irctl *ir = irctls[iminor(file->f_dentry->d_inode)]; | 763 | struct irctl *ir = irctls[iminor(file_inode(file))]; |
773 | 764 | ||
774 | if (!ir) { | 765 | if (!ir) { |
775 | printk(KERN_ERR "%s: called with invalid irctl\n", __func__); | 766 | printk(KERN_ERR "%s: called with invalid irctl\n", __func__); |
diff --git a/drivers/media/v4l2-core/v4l2-dev.c b/drivers/media/v4l2-core/v4l2-dev.c index 51b3a7713dcd..de1e9ab7db99 100644 --- a/drivers/media/v4l2-core/v4l2-dev.c +++ b/drivers/media/v4l2-core/v4l2-dev.c | |||
@@ -222,7 +222,7 @@ static struct class video_class = { | |||
222 | 222 | ||
223 | struct video_device *video_devdata(struct file *file) | 223 | struct video_device *video_devdata(struct file *file) |
224 | { | 224 | { |
225 | return video_device[iminor(file->f_path.dentry->d_inode)]; | 225 | return video_device[iminor(file_inode(file))]; |
226 | } | 226 | } |
227 | EXPORT_SYMBOL(video_devdata); | 227 | EXPORT_SYMBOL(video_devdata); |
228 | 228 | ||
diff --git a/drivers/mtd/nand/nandsim.c b/drivers/mtd/nand/nandsim.c index 818b65c85d12..8f30d385bfa3 100644 --- a/drivers/mtd/nand/nandsim.c +++ b/drivers/mtd/nand/nandsim.c | |||
@@ -1408,40 +1408,32 @@ static void clear_memalloc(int memalloc) | |||
1408 | current->flags &= ~PF_MEMALLOC; | 1408 | current->flags &= ~PF_MEMALLOC; |
1409 | } | 1409 | } |
1410 | 1410 | ||
1411 | static ssize_t read_file(struct nandsim *ns, struct file *file, void *buf, size_t count, loff_t *pos) | 1411 | static ssize_t read_file(struct nandsim *ns, struct file *file, void *buf, size_t count, loff_t pos) |
1412 | { | 1412 | { |
1413 | mm_segment_t old_fs; | ||
1414 | ssize_t tx; | 1413 | ssize_t tx; |
1415 | int err, memalloc; | 1414 | int err, memalloc; |
1416 | 1415 | ||
1417 | err = get_pages(ns, file, count, *pos); | 1416 | err = get_pages(ns, file, count, pos); |
1418 | if (err) | 1417 | if (err) |
1419 | return err; | 1418 | return err; |
1420 | old_fs = get_fs(); | ||
1421 | set_fs(get_ds()); | ||
1422 | memalloc = set_memalloc(); | 1419 | memalloc = set_memalloc(); |
1423 | tx = vfs_read(file, (char __user *)buf, count, pos); | 1420 | tx = kernel_read(file, pos, buf, count); |
1424 | clear_memalloc(memalloc); | 1421 | clear_memalloc(memalloc); |
1425 | set_fs(old_fs); | ||
1426 | put_pages(ns); | 1422 | put_pages(ns); |
1427 | return tx; | 1423 | return tx; |
1428 | } | 1424 | } |
1429 | 1425 | ||
1430 | static ssize_t write_file(struct nandsim *ns, struct file *file, void *buf, size_t count, loff_t *pos) | 1426 | static ssize_t write_file(struct nandsim *ns, struct file *file, void *buf, size_t count, loff_t pos) |
1431 | { | 1427 | { |
1432 | mm_segment_t old_fs; | ||
1433 | ssize_t tx; | 1428 | ssize_t tx; |
1434 | int err, memalloc; | 1429 | int err, memalloc; |
1435 | 1430 | ||
1436 | err = get_pages(ns, file, count, *pos); | 1431 | err = get_pages(ns, file, count, pos); |
1437 | if (err) | 1432 | if (err) |
1438 | return err; | 1433 | return err; |
1439 | old_fs = get_fs(); | ||
1440 | set_fs(get_ds()); | ||
1441 | memalloc = set_memalloc(); | 1434 | memalloc = set_memalloc(); |
1442 | tx = vfs_write(file, (char __user *)buf, count, pos); | 1435 | tx = kernel_write(file, buf, count, pos); |
1443 | clear_memalloc(memalloc); | 1436 | clear_memalloc(memalloc); |
1444 | set_fs(old_fs); | ||
1445 | put_pages(ns); | 1437 | put_pages(ns); |
1446 | return tx; | 1438 | return tx; |
1447 | } | 1439 | } |
@@ -1511,7 +1503,7 @@ static void read_page(struct nandsim *ns, int num) | |||
1511 | if (do_read_error(ns, num)) | 1503 | if (do_read_error(ns, num)) |
1512 | return; | 1504 | return; |
1513 | pos = (loff_t)ns->regs.row * ns->geom.pgszoob + ns->regs.column + ns->regs.off; | 1505 | pos = (loff_t)ns->regs.row * ns->geom.pgszoob + ns->regs.column + ns->regs.off; |
1514 | tx = read_file(ns, ns->cfile, ns->buf.byte, num, &pos); | 1506 | tx = read_file(ns, ns->cfile, ns->buf.byte, num, pos); |
1515 | if (tx != num) { | 1507 | if (tx != num) { |
1516 | NS_ERR("read_page: read error for page %d ret %ld\n", ns->regs.row, (long)tx); | 1508 | NS_ERR("read_page: read error for page %d ret %ld\n", ns->regs.row, (long)tx); |
1517 | return; | 1509 | return; |
@@ -1573,7 +1565,7 @@ static int prog_page(struct nandsim *ns, int num) | |||
1573 | u_char *pg_off; | 1565 | u_char *pg_off; |
1574 | 1566 | ||
1575 | if (ns->cfile) { | 1567 | if (ns->cfile) { |
1576 | loff_t off, pos; | 1568 | loff_t off; |
1577 | ssize_t tx; | 1569 | ssize_t tx; |
1578 | int all; | 1570 | int all; |
1579 | 1571 | ||
@@ -1585,8 +1577,7 @@ static int prog_page(struct nandsim *ns, int num) | |||
1585 | memset(ns->file_buf, 0xff, ns->geom.pgszoob); | 1577 | memset(ns->file_buf, 0xff, ns->geom.pgszoob); |
1586 | } else { | 1578 | } else { |
1587 | all = 0; | 1579 | all = 0; |
1588 | pos = off; | 1580 | tx = read_file(ns, ns->cfile, pg_off, num, off); |
1589 | tx = read_file(ns, ns->cfile, pg_off, num, &pos); | ||
1590 | if (tx != num) { | 1581 | if (tx != num) { |
1591 | NS_ERR("prog_page: read error for page %d ret %ld\n", ns->regs.row, (long)tx); | 1582 | NS_ERR("prog_page: read error for page %d ret %ld\n", ns->regs.row, (long)tx); |
1592 | return -1; | 1583 | return -1; |
@@ -1595,16 +1586,15 @@ static int prog_page(struct nandsim *ns, int num) | |||
1595 | for (i = 0; i < num; i++) | 1586 | for (i = 0; i < num; i++) |
1596 | pg_off[i] &= ns->buf.byte[i]; | 1587 | pg_off[i] &= ns->buf.byte[i]; |
1597 | if (all) { | 1588 | if (all) { |
1598 | pos = (loff_t)ns->regs.row * ns->geom.pgszoob; | 1589 | loff_t pos = (loff_t)ns->regs.row * ns->geom.pgszoob; |
1599 | tx = write_file(ns, ns->cfile, ns->file_buf, ns->geom.pgszoob, &pos); | 1590 | tx = write_file(ns, ns->cfile, ns->file_buf, ns->geom.pgszoob, pos); |
1600 | if (tx != ns->geom.pgszoob) { | 1591 | if (tx != ns->geom.pgszoob) { |
1601 | NS_ERR("prog_page: write error for page %d ret %ld\n", ns->regs.row, (long)tx); | 1592 | NS_ERR("prog_page: write error for page %d ret %ld\n", ns->regs.row, (long)tx); |
1602 | return -1; | 1593 | return -1; |
1603 | } | 1594 | } |
1604 | ns->pages_written[ns->regs.row] = 1; | 1595 | ns->pages_written[ns->regs.row] = 1; |
1605 | } else { | 1596 | } else { |
1606 | pos = off; | 1597 | tx = write_file(ns, ns->cfile, pg_off, num, off); |
1607 | tx = write_file(ns, ns->cfile, pg_off, num, &pos); | ||
1608 | if (tx != num) { | 1598 | if (tx != num) { |
1609 | NS_ERR("prog_page: write error for page %d ret %ld\n", ns->regs.row, (long)tx); | 1599 | NS_ERR("prog_page: write error for page %d ret %ld\n", ns->regs.row, (long)tx); |
1610 | return -1; | 1600 | return -1; |
diff --git a/drivers/mtd/ubi/cdev.c b/drivers/mtd/ubi/cdev.c index dfcc65b33e99..4f02848bb2bc 100644 --- a/drivers/mtd/ubi/cdev.c +++ b/drivers/mtd/ubi/cdev.c | |||
@@ -194,7 +194,7 @@ static int vol_cdev_fsync(struct file *file, loff_t start, loff_t end, | |||
194 | { | 194 | { |
195 | struct ubi_volume_desc *desc = file->private_data; | 195 | struct ubi_volume_desc *desc = file->private_data; |
196 | struct ubi_device *ubi = desc->vol->ubi; | 196 | struct ubi_device *ubi = desc->vol->ubi; |
197 | struct inode *inode = file->f_path.dentry->d_inode; | 197 | struct inode *inode = file_inode(file); |
198 | int err; | 198 | int err; |
199 | mutex_lock(&inode->i_mutex); | 199 | mutex_lock(&inode->i_mutex); |
200 | err = ubi_sync(ubi->ubi_num); | 200 | err = ubi_sync(ubi->ubi_num); |
diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c index c6c05bfef0e0..e707e31abd81 100644 --- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c +++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c | |||
@@ -2347,7 +2347,7 @@ static ssize_t mem_read(struct file *file, char __user *buf, size_t count, | |||
2347 | loff_t *ppos) | 2347 | loff_t *ppos) |
2348 | { | 2348 | { |
2349 | loff_t pos = *ppos; | 2349 | loff_t pos = *ppos; |
2350 | loff_t avail = file->f_path.dentry->d_inode->i_size; | 2350 | loff_t avail = file_inode(file)->i_size; |
2351 | unsigned int mem = (uintptr_t)file->private_data & 3; | 2351 | unsigned int mem = (uintptr_t)file->private_data & 3; |
2352 | struct adapter *adap = file->private_data - mem; | 2352 | struct adapter *adap = file->private_data - mem; |
2353 | 2353 | ||
diff --git a/drivers/net/wan/cosa.c b/drivers/net/wan/cosa.c index 0179cefae438..84734a805092 100644 --- a/drivers/net/wan/cosa.c +++ b/drivers/net/wan/cosa.c | |||
@@ -938,14 +938,14 @@ static int cosa_open(struct inode *inode, struct file *file) | |||
938 | int ret = 0; | 938 | int ret = 0; |
939 | 939 | ||
940 | mutex_lock(&cosa_chardev_mutex); | 940 | mutex_lock(&cosa_chardev_mutex); |
941 | if ((n=iminor(file->f_path.dentry->d_inode)>>CARD_MINOR_BITS) | 941 | if ((n=iminor(file_inode(file))>>CARD_MINOR_BITS) |
942 | >= nr_cards) { | 942 | >= nr_cards) { |
943 | ret = -ENODEV; | 943 | ret = -ENODEV; |
944 | goto out; | 944 | goto out; |
945 | } | 945 | } |
946 | cosa = cosa_cards+n; | 946 | cosa = cosa_cards+n; |
947 | 947 | ||
948 | if ((n=iminor(file->f_path.dentry->d_inode) | 948 | if ((n=iminor(file_inode(file)) |
949 | & ((1<<CARD_MINOR_BITS)-1)) >= cosa->nchannels) { | 949 | & ((1<<CARD_MINOR_BITS)-1)) >= cosa->nchannels) { |
950 | ret = -ENODEV; | 950 | ret = -ENODEV; |
951 | goto out; | 951 | goto out; |
diff --git a/drivers/net/wireless/ray_cs.c b/drivers/net/wireless/ray_cs.c index e7cf37f550d1..3109c0db66e1 100644 --- a/drivers/net/wireless/ray_cs.c +++ b/drivers/net/wireless/ray_cs.c | |||
@@ -2778,7 +2778,7 @@ static ssize_t int_proc_write(struct file *file, const char __user *buffer, | |||
2778 | nr = nr * 10 + c; | 2778 | nr = nr * 10 + c; |
2779 | p++; | 2779 | p++; |
2780 | } while (--len); | 2780 | } while (--len); |
2781 | *(int *)PDE(file->f_path.dentry->d_inode)->data = nr; | 2781 | *(int *)PDE(file_inode(file))->data = nr; |
2782 | return count; | 2782 | return count; |
2783 | } | 2783 | } |
2784 | 2784 | ||
diff --git a/drivers/oprofile/oprofilefs.c b/drivers/oprofile/oprofilefs.c index 849357c1045c..445ffda715ad 100644 --- a/drivers/oprofile/oprofilefs.c +++ b/drivers/oprofile/oprofilefs.c | |||
@@ -139,17 +139,22 @@ static int __oprofilefs_create_file(struct super_block *sb, | |||
139 | struct dentry *dentry; | 139 | struct dentry *dentry; |
140 | struct inode *inode; | 140 | struct inode *inode; |
141 | 141 | ||
142 | mutex_lock(&root->d_inode->i_mutex); | ||
142 | dentry = d_alloc_name(root, name); | 143 | dentry = d_alloc_name(root, name); |
143 | if (!dentry) | 144 | if (!dentry) { |
145 | mutex_unlock(&root->d_inode->i_mutex); | ||
144 | return -ENOMEM; | 146 | return -ENOMEM; |
147 | } | ||
145 | inode = oprofilefs_get_inode(sb, S_IFREG | perm); | 148 | inode = oprofilefs_get_inode(sb, S_IFREG | perm); |
146 | if (!inode) { | 149 | if (!inode) { |
147 | dput(dentry); | 150 | dput(dentry); |
151 | mutex_unlock(&root->d_inode->i_mutex); | ||
148 | return -ENOMEM; | 152 | return -ENOMEM; |
149 | } | 153 | } |
150 | inode->i_fop = fops; | 154 | inode->i_fop = fops; |
155 | inode->i_private = priv; | ||
151 | d_add(dentry, inode); | 156 | d_add(dentry, inode); |
152 | dentry->d_inode->i_private = priv; | 157 | mutex_unlock(&root->d_inode->i_mutex); |
153 | return 0; | 158 | return 0; |
154 | } | 159 | } |
155 | 160 | ||
@@ -212,17 +217,22 @@ struct dentry *oprofilefs_mkdir(struct super_block *sb, | |||
212 | struct dentry *dentry; | 217 | struct dentry *dentry; |
213 | struct inode *inode; | 218 | struct inode *inode; |
214 | 219 | ||
220 | mutex_lock(&root->d_inode->i_mutex); | ||
215 | dentry = d_alloc_name(root, name); | 221 | dentry = d_alloc_name(root, name); |
216 | if (!dentry) | 222 | if (!dentry) { |
223 | mutex_unlock(&root->d_inode->i_mutex); | ||
217 | return NULL; | 224 | return NULL; |
225 | } | ||
218 | inode = oprofilefs_get_inode(sb, S_IFDIR | 0755); | 226 | inode = oprofilefs_get_inode(sb, S_IFDIR | 0755); |
219 | if (!inode) { | 227 | if (!inode) { |
220 | dput(dentry); | 228 | dput(dentry); |
229 | mutex_unlock(&root->d_inode->i_mutex); | ||
221 | return NULL; | 230 | return NULL; |
222 | } | 231 | } |
223 | inode->i_op = &simple_dir_inode_operations; | 232 | inode->i_op = &simple_dir_inode_operations; |
224 | inode->i_fop = &simple_dir_operations; | 233 | inode->i_fop = &simple_dir_operations; |
225 | d_add(dentry, inode); | 234 | d_add(dentry, inode); |
235 | mutex_unlock(&root->d_inode->i_mutex); | ||
226 | return dentry; | 236 | return dentry; |
227 | } | 237 | } |
228 | 238 | ||
diff --git a/drivers/parisc/led.c b/drivers/parisc/led.c index f2f501e5b6a0..d4d800c54d86 100644 --- a/drivers/parisc/led.c +++ b/drivers/parisc/led.c | |||
@@ -179,7 +179,7 @@ static int led_proc_open(struct inode *inode, struct file *file) | |||
179 | static ssize_t led_proc_write(struct file *file, const char *buf, | 179 | static ssize_t led_proc_write(struct file *file, const char *buf, |
180 | size_t count, loff_t *pos) | 180 | size_t count, loff_t *pos) |
181 | { | 181 | { |
182 | void *data = PDE(file->f_path.dentry->d_inode)->data; | 182 | void *data = PDE(file_inode(file))->data; |
183 | char *cur, lbuf[32]; | 183 | char *cur, lbuf[32]; |
184 | int d; | 184 | int d; |
185 | 185 | ||
diff --git a/drivers/pci/proc.c b/drivers/pci/proc.c index 9b8505ccc56d..0b009470e6db 100644 --- a/drivers/pci/proc.c +++ b/drivers/pci/proc.c | |||
@@ -21,7 +21,7 @@ static loff_t | |||
21 | proc_bus_pci_lseek(struct file *file, loff_t off, int whence) | 21 | proc_bus_pci_lseek(struct file *file, loff_t off, int whence) |
22 | { | 22 | { |
23 | loff_t new = -1; | 23 | loff_t new = -1; |
24 | struct inode *inode = file->f_path.dentry->d_inode; | 24 | struct inode *inode = file_inode(file); |
25 | 25 | ||
26 | mutex_lock(&inode->i_mutex); | 26 | mutex_lock(&inode->i_mutex); |
27 | switch (whence) { | 27 | switch (whence) { |
@@ -46,7 +46,7 @@ proc_bus_pci_lseek(struct file *file, loff_t off, int whence) | |||
46 | static ssize_t | 46 | static ssize_t |
47 | proc_bus_pci_read(struct file *file, char __user *buf, size_t nbytes, loff_t *ppos) | 47 | proc_bus_pci_read(struct file *file, char __user *buf, size_t nbytes, loff_t *ppos) |
48 | { | 48 | { |
49 | const struct inode *ino = file->f_path.dentry->d_inode; | 49 | const struct inode *ino = file_inode(file); |
50 | const struct proc_dir_entry *dp = PDE(ino); | 50 | const struct proc_dir_entry *dp = PDE(ino); |
51 | struct pci_dev *dev = dp->data; | 51 | struct pci_dev *dev = dp->data; |
52 | unsigned int pos = *ppos; | 52 | unsigned int pos = *ppos; |
@@ -132,7 +132,7 @@ proc_bus_pci_read(struct file *file, char __user *buf, size_t nbytes, loff_t *pp | |||
132 | static ssize_t | 132 | static ssize_t |
133 | proc_bus_pci_write(struct file *file, const char __user *buf, size_t nbytes, loff_t *ppos) | 133 | proc_bus_pci_write(struct file *file, const char __user *buf, size_t nbytes, loff_t *ppos) |
134 | { | 134 | { |
135 | struct inode *ino = file->f_path.dentry->d_inode; | 135 | struct inode *ino = file_inode(file); |
136 | const struct proc_dir_entry *dp = PDE(ino); | 136 | const struct proc_dir_entry *dp = PDE(ino); |
137 | struct pci_dev *dev = dp->data; | 137 | struct pci_dev *dev = dp->data; |
138 | int pos = *ppos; | 138 | int pos = *ppos; |
@@ -212,7 +212,7 @@ struct pci_filp_private { | |||
212 | static long proc_bus_pci_ioctl(struct file *file, unsigned int cmd, | 212 | static long proc_bus_pci_ioctl(struct file *file, unsigned int cmd, |
213 | unsigned long arg) | 213 | unsigned long arg) |
214 | { | 214 | { |
215 | const struct proc_dir_entry *dp = PDE(file->f_dentry->d_inode); | 215 | const struct proc_dir_entry *dp = PDE(file_inode(file)); |
216 | struct pci_dev *dev = dp->data; | 216 | struct pci_dev *dev = dp->data; |
217 | #ifdef HAVE_PCI_MMAP | 217 | #ifdef HAVE_PCI_MMAP |
218 | struct pci_filp_private *fpriv = file->private_data; | 218 | struct pci_filp_private *fpriv = file->private_data; |
@@ -253,7 +253,7 @@ static long proc_bus_pci_ioctl(struct file *file, unsigned int cmd, | |||
253 | #ifdef HAVE_PCI_MMAP | 253 | #ifdef HAVE_PCI_MMAP |
254 | static int proc_bus_pci_mmap(struct file *file, struct vm_area_struct *vma) | 254 | static int proc_bus_pci_mmap(struct file *file, struct vm_area_struct *vma) |
255 | { | 255 | { |
256 | struct inode *inode = file->f_path.dentry->d_inode; | 256 | struct inode *inode = file_inode(file); |
257 | const struct proc_dir_entry *dp = PDE(inode); | 257 | const struct proc_dir_entry *dp = PDE(inode); |
258 | struct pci_dev *dev = dp->data; | 258 | struct pci_dev *dev = dp->data; |
259 | struct pci_filp_private *fpriv = file->private_data; | 259 | struct pci_filp_private *fpriv = file->private_data; |
diff --git a/drivers/platform/x86/sony-laptop.c b/drivers/platform/x86/sony-laptop.c index ceb41eff4230..8da21876a794 100644 --- a/drivers/platform/x86/sony-laptop.c +++ b/drivers/platform/x86/sony-laptop.c | |||
@@ -3566,7 +3566,7 @@ static ssize_t sonypi_misc_read(struct file *file, char __user *buf, | |||
3566 | } | 3566 | } |
3567 | 3567 | ||
3568 | if (ret > 0) { | 3568 | if (ret > 0) { |
3569 | struct inode *inode = file->f_path.dentry->d_inode; | 3569 | struct inode *inode = file_inode(file); |
3570 | inode->i_atime = current_fs_time(inode->i_sb); | 3570 | inode->i_atime = current_fs_time(inode->i_sb); |
3571 | } | 3571 | } |
3572 | 3572 | ||
diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c index ebcb461bb2b0..f4f8408f3b5b 100644 --- a/drivers/platform/x86/thinkpad_acpi.c +++ b/drivers/platform/x86/thinkpad_acpi.c | |||
@@ -852,7 +852,7 @@ static ssize_t dispatch_proc_write(struct file *file, | |||
852 | const char __user *userbuf, | 852 | const char __user *userbuf, |
853 | size_t count, loff_t *pos) | 853 | size_t count, loff_t *pos) |
854 | { | 854 | { |
855 | struct ibm_struct *ibm = PDE(file->f_path.dentry->d_inode)->data; | 855 | struct ibm_struct *ibm = PDE(file_inode(file))->data; |
856 | char *kernbuf; | 856 | char *kernbuf; |
857 | int ret; | 857 | int ret; |
858 | 858 | ||
diff --git a/drivers/platform/x86/toshiba_acpi.c b/drivers/platform/x86/toshiba_acpi.c index 904476b2fa8f..242abac62d8b 100644 --- a/drivers/platform/x86/toshiba_acpi.c +++ b/drivers/platform/x86/toshiba_acpi.c | |||
@@ -583,7 +583,7 @@ static int set_lcd_status(struct backlight_device *bd) | |||
583 | static ssize_t lcd_proc_write(struct file *file, const char __user *buf, | 583 | static ssize_t lcd_proc_write(struct file *file, const char __user *buf, |
584 | size_t count, loff_t *pos) | 584 | size_t count, loff_t *pos) |
585 | { | 585 | { |
586 | struct toshiba_acpi_dev *dev = PDE(file->f_path.dentry->d_inode)->data; | 586 | struct toshiba_acpi_dev *dev = PDE(file_inode(file))->data; |
587 | char cmd[42]; | 587 | char cmd[42]; |
588 | size_t len; | 588 | size_t len; |
589 | int value; | 589 | int value; |
@@ -650,7 +650,7 @@ static int video_proc_open(struct inode *inode, struct file *file) | |||
650 | static ssize_t video_proc_write(struct file *file, const char __user *buf, | 650 | static ssize_t video_proc_write(struct file *file, const char __user *buf, |
651 | size_t count, loff_t *pos) | 651 | size_t count, loff_t *pos) |
652 | { | 652 | { |
653 | struct toshiba_acpi_dev *dev = PDE(file->f_path.dentry->d_inode)->data; | 653 | struct toshiba_acpi_dev *dev = PDE(file_inode(file))->data; |
654 | char *cmd, *buffer; | 654 | char *cmd, *buffer; |
655 | int ret; | 655 | int ret; |
656 | int value; | 656 | int value; |
@@ -750,7 +750,7 @@ static int fan_proc_open(struct inode *inode, struct file *file) | |||
750 | static ssize_t fan_proc_write(struct file *file, const char __user *buf, | 750 | static ssize_t fan_proc_write(struct file *file, const char __user *buf, |
751 | size_t count, loff_t *pos) | 751 | size_t count, loff_t *pos) |
752 | { | 752 | { |
753 | struct toshiba_acpi_dev *dev = PDE(file->f_path.dentry->d_inode)->data; | 753 | struct toshiba_acpi_dev *dev = PDE(file_inode(file))->data; |
754 | char cmd[42]; | 754 | char cmd[42]; |
755 | size_t len; | 755 | size_t len; |
756 | int value; | 756 | int value; |
@@ -822,7 +822,7 @@ static int keys_proc_open(struct inode *inode, struct file *file) | |||
822 | static ssize_t keys_proc_write(struct file *file, const char __user *buf, | 822 | static ssize_t keys_proc_write(struct file *file, const char __user *buf, |
823 | size_t count, loff_t *pos) | 823 | size_t count, loff_t *pos) |
824 | { | 824 | { |
825 | struct toshiba_acpi_dev *dev = PDE(file->f_path.dentry->d_inode)->data; | 825 | struct toshiba_acpi_dev *dev = PDE(file_inode(file))->data; |
826 | char cmd[42]; | 826 | char cmd[42]; |
827 | size_t len; | 827 | size_t len; |
828 | int value; | 828 | int value; |
diff --git a/drivers/pnp/isapnp/proc.c b/drivers/pnp/isapnp/proc.c index 315b3112aca8..65f735ac6b3b 100644 --- a/drivers/pnp/isapnp/proc.c +++ b/drivers/pnp/isapnp/proc.c | |||
@@ -30,7 +30,7 @@ static struct proc_dir_entry *isapnp_proc_bus_dir = NULL; | |||
30 | static loff_t isapnp_proc_bus_lseek(struct file *file, loff_t off, int whence) | 30 | static loff_t isapnp_proc_bus_lseek(struct file *file, loff_t off, int whence) |
31 | { | 31 | { |
32 | loff_t new = -1; | 32 | loff_t new = -1; |
33 | struct inode *inode = file->f_path.dentry->d_inode; | 33 | struct inode *inode = file_inode(file); |
34 | 34 | ||
35 | mutex_lock(&inode->i_mutex); | 35 | mutex_lock(&inode->i_mutex); |
36 | switch (whence) { | 36 | switch (whence) { |
@@ -55,7 +55,7 @@ static loff_t isapnp_proc_bus_lseek(struct file *file, loff_t off, int whence) | |||
55 | static ssize_t isapnp_proc_bus_read(struct file *file, char __user * buf, | 55 | static ssize_t isapnp_proc_bus_read(struct file *file, char __user * buf, |
56 | size_t nbytes, loff_t * ppos) | 56 | size_t nbytes, loff_t * ppos) |
57 | { | 57 | { |
58 | struct inode *ino = file->f_path.dentry->d_inode; | 58 | struct inode *ino = file_inode(file); |
59 | struct proc_dir_entry *dp = PDE(ino); | 59 | struct proc_dir_entry *dp = PDE(ino); |
60 | struct pnp_dev *dev = dp->data; | 60 | struct pnp_dev *dev = dp->data; |
61 | int pos = *ppos; | 61 | int pos = *ppos; |
diff --git a/drivers/pnp/pnpbios/proc.c b/drivers/pnp/pnpbios/proc.c index bc89f392a629..63ddb0173456 100644 --- a/drivers/pnp/pnpbios/proc.c +++ b/drivers/pnp/pnpbios/proc.c | |||
@@ -244,7 +244,7 @@ static int pnpbios_proc_open(struct inode *inode, struct file *file) | |||
244 | static ssize_t pnpbios_proc_write(struct file *file, const char __user *buf, | 244 | static ssize_t pnpbios_proc_write(struct file *file, const char __user *buf, |
245 | size_t count, loff_t *pos) | 245 | size_t count, loff_t *pos) |
246 | { | 246 | { |
247 | void *data = PDE(file->f_path.dentry->d_inode)->data; | 247 | void *data = PDE(file_inode(file))->data; |
248 | struct pnp_bios_node *node; | 248 | struct pnp_bios_node *node; |
249 | int boot = (long)data >> 8; | 249 | int boot = (long)data >> 8; |
250 | u8 nodenum = (long)data; | 250 | u8 nodenum = (long)data; |
diff --git a/drivers/s390/char/fs3270.c b/drivers/s390/char/fs3270.c index 230697aac94b..96e52bf75930 100644 --- a/drivers/s390/char/fs3270.c +++ b/drivers/s390/char/fs3270.c | |||
@@ -433,9 +433,9 @@ fs3270_open(struct inode *inode, struct file *filp) | |||
433 | struct idal_buffer *ib; | 433 | struct idal_buffer *ib; |
434 | int minor, rc = 0; | 434 | int minor, rc = 0; |
435 | 435 | ||
436 | if (imajor(filp->f_path.dentry->d_inode) != IBM_FS3270_MAJOR) | 436 | if (imajor(file_inode(filp)) != IBM_FS3270_MAJOR) |
437 | return -ENODEV; | 437 | return -ENODEV; |
438 | minor = iminor(filp->f_path.dentry->d_inode); | 438 | minor = iminor(file_inode(filp)); |
439 | /* Check for minor 0 multiplexer. */ | 439 | /* Check for minor 0 multiplexer. */ |
440 | if (minor == 0) { | 440 | if (minor == 0) { |
441 | struct tty_struct *tty = get_current_tty(); | 441 | struct tty_struct *tty = get_current_tty(); |
diff --git a/drivers/s390/char/tape_char.c b/drivers/s390/char/tape_char.c index 2d61db3fc62a..6dc60725de92 100644 --- a/drivers/s390/char/tape_char.c +++ b/drivers/s390/char/tape_char.c | |||
@@ -273,13 +273,13 @@ tapechar_open (struct inode *inode, struct file *filp) | |||
273 | int minor, rc; | 273 | int minor, rc; |
274 | 274 | ||
275 | DBF_EVENT(6, "TCHAR:open: %i:%i\n", | 275 | DBF_EVENT(6, "TCHAR:open: %i:%i\n", |
276 | imajor(filp->f_path.dentry->d_inode), | 276 | imajor(file_inode(filp)), |
277 | iminor(filp->f_path.dentry->d_inode)); | 277 | iminor(file_inode(filp))); |
278 | 278 | ||
279 | if (imajor(filp->f_path.dentry->d_inode) != tapechar_major) | 279 | if (imajor(file_inode(filp)) != tapechar_major) |
280 | return -ENODEV; | 280 | return -ENODEV; |
281 | 281 | ||
282 | minor = iminor(filp->f_path.dentry->d_inode); | 282 | minor = iminor(file_inode(filp)); |
283 | device = tape_find_device(minor / TAPE_MINORS_PER_DEV); | 283 | device = tape_find_device(minor / TAPE_MINORS_PER_DEV); |
284 | if (IS_ERR(device)) { | 284 | if (IS_ERR(device)) { |
285 | DBF_EVENT(3, "TCHAR:open: tape_find_device() failed\n"); | 285 | DBF_EVENT(3, "TCHAR:open: tape_find_device() failed\n"); |
diff --git a/drivers/s390/char/vmur.c b/drivers/s390/char/vmur.c index 483f72ba030d..c180e3135b3b 100644 --- a/drivers/s390/char/vmur.c +++ b/drivers/s390/char/vmur.c | |||
@@ -703,7 +703,7 @@ static int ur_open(struct inode *inode, struct file *file) | |||
703 | * We treat the minor number as the devno of the ur device | 703 | * We treat the minor number as the devno of the ur device |
704 | * to find in the driver tree. | 704 | * to find in the driver tree. |
705 | */ | 705 | */ |
706 | devno = MINOR(file->f_dentry->d_inode->i_rdev); | 706 | devno = MINOR(file_inode(file)->i_rdev); |
707 | 707 | ||
708 | urd = urdev_get_from_devno(devno); | 708 | urd = urdev_get_from_devno(devno); |
709 | if (!urd) { | 709 | if (!urd) { |
diff --git a/drivers/s390/cio/qdio_debug.c b/drivers/s390/cio/qdio_debug.c index e6e0d31c02ac..749b72739c4a 100644 --- a/drivers/s390/cio/qdio_debug.c +++ b/drivers/s390/cio/qdio_debug.c | |||
@@ -128,7 +128,7 @@ static int qstat_show(struct seq_file *m, void *v) | |||
128 | static int qstat_seq_open(struct inode *inode, struct file *filp) | 128 | static int qstat_seq_open(struct inode *inode, struct file *filp) |
129 | { | 129 | { |
130 | return single_open(filp, qstat_show, | 130 | return single_open(filp, qstat_show, |
131 | filp->f_path.dentry->d_inode->i_private); | 131 | file_inode(filp)->i_private); |
132 | } | 132 | } |
133 | 133 | ||
134 | static const struct file_operations debugfs_fops = { | 134 | static const struct file_operations debugfs_fops = { |
@@ -221,7 +221,7 @@ static ssize_t qperf_seq_write(struct file *file, const char __user *ubuf, | |||
221 | static int qperf_seq_open(struct inode *inode, struct file *filp) | 221 | static int qperf_seq_open(struct inode *inode, struct file *filp) |
222 | { | 222 | { |
223 | return single_open(filp, qperf_show, | 223 | return single_open(filp, qperf_show, |
224 | filp->f_path.dentry->d_inode->i_private); | 224 | file_inode(filp)->i_private); |
225 | } | 225 | } |
226 | 226 | ||
227 | static struct file_operations debugfs_perf_fops = { | 227 | static struct file_operations debugfs_perf_fops = { |
diff --git a/drivers/sbus/char/display7seg.c b/drivers/sbus/char/display7seg.c index e85c803b30cd..fc1339cf91ac 100644 --- a/drivers/sbus/char/display7seg.c +++ b/drivers/sbus/char/display7seg.c | |||
@@ -107,7 +107,7 @@ static long d7s_ioctl(struct file *file, unsigned int cmd, unsigned long arg) | |||
107 | int error = 0; | 107 | int error = 0; |
108 | u8 ireg = 0; | 108 | u8 ireg = 0; |
109 | 109 | ||
110 | if (D7S_MINOR != iminor(file->f_path.dentry->d_inode)) | 110 | if (D7S_MINOR != iminor(file_inode(file))) |
111 | return -ENODEV; | 111 | return -ENODEV; |
112 | 112 | ||
113 | mutex_lock(&d7s_mutex); | 113 | mutex_lock(&d7s_mutex); |
diff --git a/drivers/scsi/3w-9xxx.c b/drivers/scsi/3w-9xxx.c index d1f0120cdb98..5e1e12c0cf42 100644 --- a/drivers/scsi/3w-9xxx.c +++ b/drivers/scsi/3w-9xxx.c | |||
@@ -640,7 +640,7 @@ out: | |||
640 | /* This function handles ioctl for the character device */ | 640 | /* This function handles ioctl for the character device */ |
641 | static long twa_chrdev_ioctl(struct file *file, unsigned int cmd, unsigned long arg) | 641 | static long twa_chrdev_ioctl(struct file *file, unsigned int cmd, unsigned long arg) |
642 | { | 642 | { |
643 | struct inode *inode = file->f_path.dentry->d_inode; | 643 | struct inode *inode = file_inode(file); |
644 | long timeout; | 644 | long timeout; |
645 | unsigned long *cpu_addr, data_buffer_length_adjusted = 0, flags = 0; | 645 | unsigned long *cpu_addr, data_buffer_length_adjusted = 0, flags = 0; |
646 | dma_addr_t dma_handle; | 646 | dma_addr_t dma_handle; |
diff --git a/drivers/scsi/3w-sas.c b/drivers/scsi/3w-sas.c index 52a2f0580d97..c845bdbeb6c0 100644 --- a/drivers/scsi/3w-sas.c +++ b/drivers/scsi/3w-sas.c | |||
@@ -757,7 +757,7 @@ static long twl_chrdev_ioctl(struct file *file, unsigned int cmd, unsigned long | |||
757 | dma_addr_t dma_handle; | 757 | dma_addr_t dma_handle; |
758 | int request_id = 0; | 758 | int request_id = 0; |
759 | TW_Ioctl_Driver_Command driver_command; | 759 | TW_Ioctl_Driver_Command driver_command; |
760 | struct inode *inode = file->f_dentry->d_inode; | 760 | struct inode *inode = file_inode(file); |
761 | TW_Ioctl_Buf_Apache *tw_ioctl; | 761 | TW_Ioctl_Buf_Apache *tw_ioctl; |
762 | TW_Command_Full *full_command_packet; | 762 | TW_Command_Full *full_command_packet; |
763 | TW_Device_Extension *tw_dev = twl_device_extension_list[iminor(inode)]; | 763 | TW_Device_Extension *tw_dev = twl_device_extension_list[iminor(inode)]; |
diff --git a/drivers/scsi/3w-xxxx.c b/drivers/scsi/3w-xxxx.c index 62071d2fc1ce..56662ae03dea 100644 --- a/drivers/scsi/3w-xxxx.c +++ b/drivers/scsi/3w-xxxx.c | |||
@@ -889,7 +889,7 @@ static long tw_chrdev_ioctl(struct file *file, unsigned int cmd, unsigned long a | |||
889 | unsigned long flags; | 889 | unsigned long flags; |
890 | unsigned int data_buffer_length = 0; | 890 | unsigned int data_buffer_length = 0; |
891 | unsigned long data_buffer_length_adjusted = 0; | 891 | unsigned long data_buffer_length_adjusted = 0; |
892 | struct inode *inode = file->f_dentry->d_inode; | 892 | struct inode *inode = file_inode(file); |
893 | unsigned long *cpu_addr; | 893 | unsigned long *cpu_addr; |
894 | long timeout; | 894 | long timeout; |
895 | TW_New_Ioctl *tw_ioctl; | 895 | TW_New_Ioctl *tw_ioctl; |
diff --git a/drivers/scsi/csiostor/csio_init.c b/drivers/scsi/csiostor/csio_init.c index b42cbbd3d92d..c323b2030afa 100644 --- a/drivers/scsi/csiostor/csio_init.c +++ b/drivers/scsi/csiostor/csio_init.c | |||
@@ -71,7 +71,7 @@ static ssize_t | |||
71 | csio_mem_read(struct file *file, char __user *buf, size_t count, loff_t *ppos) | 71 | csio_mem_read(struct file *file, char __user *buf, size_t count, loff_t *ppos) |
72 | { | 72 | { |
73 | loff_t pos = *ppos; | 73 | loff_t pos = *ppos; |
74 | loff_t avail = file->f_path.dentry->d_inode->i_size; | 74 | loff_t avail = file_inode(file)->i_size; |
75 | unsigned int mem = (uintptr_t)file->private_data & 3; | 75 | unsigned int mem = (uintptr_t)file->private_data & 3; |
76 | struct csio_hw *hw = file->private_data - mem; | 76 | struct csio_hw *hw = file->private_data - mem; |
77 | 77 | ||
diff --git a/drivers/scsi/dpt_i2o.c b/drivers/scsi/dpt_i2o.c index b4f6c9a84e71..b6e2700ec1c6 100644 --- a/drivers/scsi/dpt_i2o.c +++ b/drivers/scsi/dpt_i2o.c | |||
@@ -2161,7 +2161,7 @@ static long adpt_unlocked_ioctl(struct file *file, uint cmd, ulong arg) | |||
2161 | struct inode *inode; | 2161 | struct inode *inode; |
2162 | long ret; | 2162 | long ret; |
2163 | 2163 | ||
2164 | inode = file->f_dentry->d_inode; | 2164 | inode = file_inode(file); |
2165 | 2165 | ||
2166 | mutex_lock(&adpt_mutex); | 2166 | mutex_lock(&adpt_mutex); |
2167 | ret = adpt_ioctl(inode, file, cmd, arg); | 2167 | ret = adpt_ioctl(inode, file, cmd, arg); |
@@ -2177,7 +2177,7 @@ static long compat_adpt_ioctl(struct file *file, | |||
2177 | struct inode *inode; | 2177 | struct inode *inode; |
2178 | long ret; | 2178 | long ret; |
2179 | 2179 | ||
2180 | inode = file->f_dentry->d_inode; | 2180 | inode = file_inode(file); |
2181 | 2181 | ||
2182 | mutex_lock(&adpt_mutex); | 2182 | mutex_lock(&adpt_mutex); |
2183 | 2183 | ||
diff --git a/drivers/scsi/st.c b/drivers/scsi/st.c index 98156a97c472..3e2b3717cb5c 100644 --- a/drivers/scsi/st.c +++ b/drivers/scsi/st.c | |||
@@ -977,7 +977,7 @@ static int check_tape(struct scsi_tape *STp, struct file *filp) | |||
977 | struct st_modedef *STm; | 977 | struct st_modedef *STm; |
978 | struct st_partstat *STps; | 978 | struct st_partstat *STps; |
979 | char *name = tape_name(STp); | 979 | char *name = tape_name(STp); |
980 | struct inode *inode = filp->f_path.dentry->d_inode; | 980 | struct inode *inode = file_inode(filp); |
981 | int mode = TAPE_MODE(inode); | 981 | int mode = TAPE_MODE(inode); |
982 | 982 | ||
983 | STp->ready = ST_READY; | 983 | STp->ready = ST_READY; |
diff --git a/drivers/staging/bcm/Misc.c b/drivers/staging/bcm/Misc.c index b5c2c4c15f92..d23eeeb95064 100644 --- a/drivers/staging/bcm/Misc.c +++ b/drivers/staging/bcm/Misc.c | |||
@@ -185,7 +185,7 @@ static int BcmFileDownload(struct bcm_mini_adapter *Adapter, const char *path, u | |||
185 | BCM_DEBUG_PRINT(Adapter, DBG_TYPE_INITEXIT, MP_INIT, DBG_LVL_ALL, "Unable to Open %s\n", path); | 185 | BCM_DEBUG_PRINT(Adapter, DBG_TYPE_INITEXIT, MP_INIT, DBG_LVL_ALL, "Unable to Open %s\n", path); |
186 | return -ENOENT; | 186 | return -ENOENT; |
187 | } | 187 | } |
188 | BCM_DEBUG_PRINT(Adapter, DBG_TYPE_INITEXIT, MP_INIT, DBG_LVL_ALL, "Opened file is = %s and length =0x%lx to be downloaded at =0x%x", path, (unsigned long)flp->f_dentry->d_inode->i_size, loc); | 188 | BCM_DEBUG_PRINT(Adapter, DBG_TYPE_INITEXIT, MP_INIT, DBG_LVL_ALL, "Opened file is = %s and length =0x%lx to be downloaded at =0x%x", path, (unsigned long)file_inode(flp)->i_size, loc); |
189 | do_gettimeofday(&tv); | 189 | do_gettimeofday(&tv); |
190 | 190 | ||
191 | BCM_DEBUG_PRINT(Adapter, DBG_TYPE_INITEXIT, MP_INIT, DBG_LVL_ALL, "download start %lx", ((tv.tv_sec * 1000) + (tv.tv_usec / 1000))); | 191 | BCM_DEBUG_PRINT(Adapter, DBG_TYPE_INITEXIT, MP_INIT, DBG_LVL_ALL, "download start %lx", ((tv.tv_sec * 1000) + (tv.tv_usec / 1000))); |
diff --git a/drivers/staging/ccg/f_mass_storage.c b/drivers/staging/ccg/f_mass_storage.c index 4f1142efa6d1..20bc2b454ac2 100644 --- a/drivers/staging/ccg/f_mass_storage.c +++ b/drivers/staging/ccg/f_mass_storage.c | |||
@@ -998,7 +998,7 @@ static int do_synchronize_cache(struct fsg_common *common) | |||
998 | static void invalidate_sub(struct fsg_lun *curlun) | 998 | static void invalidate_sub(struct fsg_lun *curlun) |
999 | { | 999 | { |
1000 | struct file *filp = curlun->filp; | 1000 | struct file *filp = curlun->filp; |
1001 | struct inode *inode = filp->f_path.dentry->d_inode; | 1001 | struct inode *inode = file_inode(filp); |
1002 | unsigned long rc; | 1002 | unsigned long rc; |
1003 | 1003 | ||
1004 | rc = invalidate_mapping_pages(inode->i_mapping, 0, -1); | 1004 | rc = invalidate_mapping_pages(inode->i_mapping, 0, -1); |
diff --git a/drivers/staging/ccg/rndis.c b/drivers/staging/ccg/rndis.c index e4192b887de9..d9297eebbf73 100644 --- a/drivers/staging/ccg/rndis.c +++ b/drivers/staging/ccg/rndis.c | |||
@@ -1065,7 +1065,7 @@ static int rndis_proc_show(struct seq_file *m, void *v) | |||
1065 | static ssize_t rndis_proc_write(struct file *file, const char __user *buffer, | 1065 | static ssize_t rndis_proc_write(struct file *file, const char __user *buffer, |
1066 | size_t count, loff_t *ppos) | 1066 | size_t count, loff_t *ppos) |
1067 | { | 1067 | { |
1068 | rndis_params *p = PDE(file->f_path.dentry->d_inode)->data; | 1068 | rndis_params *p = PDE(file_inode(file))->data; |
1069 | u32 speed = 0; | 1069 | u32 speed = 0; |
1070 | int i, fl_speed = 0; | 1070 | int i, fl_speed = 0; |
1071 | 1071 | ||
diff --git a/drivers/staging/ccg/storage_common.c b/drivers/staging/ccg/storage_common.c index 8d9bcd8207c8..abb01ac74cec 100644 --- a/drivers/staging/ccg/storage_common.c +++ b/drivers/staging/ccg/storage_common.c | |||
@@ -656,7 +656,7 @@ static int fsg_lun_open(struct fsg_lun *curlun, const char *filename) | |||
656 | if (!(filp->f_mode & FMODE_WRITE)) | 656 | if (!(filp->f_mode & FMODE_WRITE)) |
657 | ro = 1; | 657 | ro = 1; |
658 | 658 | ||
659 | inode = filp->f_path.dentry->d_inode; | 659 | inode = file_inode(filp); |
660 | if ((!S_ISREG(inode->i_mode) && !S_ISBLK(inode->i_mode))) { | 660 | if ((!S_ISREG(inode->i_mode) && !S_ISBLK(inode->i_mode))) { |
661 | LINFO(curlun, "invalid file type: %s\n", filename); | 661 | LINFO(curlun, "invalid file type: %s\n", filename); |
662 | goto out; | 662 | goto out; |
diff --git a/drivers/staging/dgrp/dgrp_specproc.c b/drivers/staging/dgrp/dgrp_specproc.c index 13c7ccf163c5..73f287f96604 100644 --- a/drivers/staging/dgrp/dgrp_specproc.c +++ b/drivers/staging/dgrp/dgrp_specproc.c | |||
@@ -357,7 +357,7 @@ static int dgrp_gen_proc_open(struct inode *inode, struct file *file) | |||
357 | struct dgrp_proc_entry *entry; | 357 | struct dgrp_proc_entry *entry; |
358 | int ret = 0; | 358 | int ret = 0; |
359 | 359 | ||
360 | de = (struct proc_dir_entry *) PDE(file->f_dentry->d_inode); | 360 | de = (struct proc_dir_entry *) PDE(file_inode(file)); |
361 | if (!de || !de->data) { | 361 | if (!de || !de->data) { |
362 | ret = -ENXIO; | 362 | ret = -ENXIO; |
363 | goto done; | 363 | goto done; |
@@ -387,7 +387,7 @@ static int dgrp_gen_proc_close(struct inode *inode, struct file *file) | |||
387 | struct proc_dir_entry *de; | 387 | struct proc_dir_entry *de; |
388 | struct dgrp_proc_entry *entry; | 388 | struct dgrp_proc_entry *entry; |
389 | 389 | ||
390 | de = (struct proc_dir_entry *) PDE(file->f_dentry->d_inode); | 390 | de = (struct proc_dir_entry *) PDE(file_inode(file)); |
391 | if (!de || !de->data) | 391 | if (!de || !de->data) |
392 | goto done; | 392 | goto done; |
393 | 393 | ||
diff --git a/drivers/staging/usbip/usbip_common.c b/drivers/staging/usbip/usbip_common.c index 75aa5bfcb8dd..539fa5785afe 100644 --- a/drivers/staging/usbip/usbip_common.c +++ b/drivers/staging/usbip/usbip_common.c | |||
@@ -411,7 +411,7 @@ struct socket *sockfd_to_socket(unsigned int sockfd) | |||
411 | return NULL; | 411 | return NULL; |
412 | } | 412 | } |
413 | 413 | ||
414 | inode = file->f_dentry->d_inode; | 414 | inode = file_inode(file); |
415 | 415 | ||
416 | if (!inode || !S_ISSOCK(inode->i_mode)) { | 416 | if (!inode || !S_ISSOCK(inode->i_mode)) { |
417 | fput(file); | 417 | fput(file); |
diff --git a/drivers/staging/vme/devices/vme_user.c b/drivers/staging/vme/devices/vme_user.c index 57474cff51f0..d074b1ecb41a 100644 --- a/drivers/staging/vme/devices/vme_user.c +++ b/drivers/staging/vme/devices/vme_user.c | |||
@@ -318,7 +318,7 @@ static ssize_t buffer_from_user(unsigned int minor, const char __user *buf, | |||
318 | static ssize_t vme_user_read(struct file *file, char __user *buf, size_t count, | 318 | static ssize_t vme_user_read(struct file *file, char __user *buf, size_t count, |
319 | loff_t *ppos) | 319 | loff_t *ppos) |
320 | { | 320 | { |
321 | unsigned int minor = MINOR(file->f_dentry->d_inode->i_rdev); | 321 | unsigned int minor = MINOR(file_inode(file)->i_rdev); |
322 | ssize_t retval; | 322 | ssize_t retval; |
323 | size_t image_size; | 323 | size_t image_size; |
324 | size_t okcount; | 324 | size_t okcount; |
@@ -364,7 +364,7 @@ static ssize_t vme_user_read(struct file *file, char __user *buf, size_t count, | |||
364 | static ssize_t vme_user_write(struct file *file, const char __user *buf, | 364 | static ssize_t vme_user_write(struct file *file, const char __user *buf, |
365 | size_t count, loff_t *ppos) | 365 | size_t count, loff_t *ppos) |
366 | { | 366 | { |
367 | unsigned int minor = MINOR(file->f_dentry->d_inode->i_rdev); | 367 | unsigned int minor = MINOR(file_inode(file)->i_rdev); |
368 | ssize_t retval; | 368 | ssize_t retval; |
369 | size_t image_size; | 369 | size_t image_size; |
370 | size_t okcount; | 370 | size_t okcount; |
@@ -410,7 +410,7 @@ static ssize_t vme_user_write(struct file *file, const char __user *buf, | |||
410 | static loff_t vme_user_llseek(struct file *file, loff_t off, int whence) | 410 | static loff_t vme_user_llseek(struct file *file, loff_t off, int whence) |
411 | { | 411 | { |
412 | loff_t absolute = -1; | 412 | loff_t absolute = -1; |
413 | unsigned int minor = MINOR(file->f_dentry->d_inode->i_rdev); | 413 | unsigned int minor = MINOR(file_inode(file)->i_rdev); |
414 | size_t image_size; | 414 | size_t image_size; |
415 | 415 | ||
416 | if (minor == CONTROL_MINOR) | 416 | if (minor == CONTROL_MINOR) |
@@ -583,7 +583,7 @@ vme_user_unlocked_ioctl(struct file *file, unsigned int cmd, unsigned long arg) | |||
583 | int ret; | 583 | int ret; |
584 | 584 | ||
585 | mutex_lock(&vme_user_mutex); | 585 | mutex_lock(&vme_user_mutex); |
586 | ret = vme_user_ioctl(file->f_path.dentry->d_inode, file, cmd, arg); | 586 | ret = vme_user_ioctl(file_inode(file), file, cmd, arg); |
587 | mutex_unlock(&vme_user_mutex); | 587 | mutex_unlock(&vme_user_mutex); |
588 | 588 | ||
589 | return ret; | 589 | return ret; |
diff --git a/drivers/target/target_core_alua.c b/drivers/target/target_core_alua.c index 7d4ec02e29a9..ff1c5ee352cb 100644 --- a/drivers/target/target_core_alua.c +++ b/drivers/target/target_core_alua.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <linux/spinlock.h> | 27 | #include <linux/spinlock.h> |
28 | #include <linux/configfs.h> | 28 | #include <linux/configfs.h> |
29 | #include <linux/export.h> | 29 | #include <linux/export.h> |
30 | #include <linux/file.h> | ||
30 | #include <scsi/scsi.h> | 31 | #include <scsi/scsi.h> |
31 | #include <scsi/scsi_cmnd.h> | 32 | #include <scsi/scsi_cmnd.h> |
32 | #include <asm/unaligned.h> | 33 | #include <asm/unaligned.h> |
@@ -715,36 +716,18 @@ static int core_alua_write_tpg_metadata( | |||
715 | unsigned char *md_buf, | 716 | unsigned char *md_buf, |
716 | u32 md_buf_len) | 717 | u32 md_buf_len) |
717 | { | 718 | { |
718 | mm_segment_t old_fs; | 719 | struct file *file = filp_open(path, O_RDWR | O_CREAT | O_TRUNC, 0600); |
719 | struct file *file; | 720 | int ret; |
720 | struct iovec iov[1]; | ||
721 | int flags = O_RDWR | O_CREAT | O_TRUNC, ret; | ||
722 | |||
723 | memset(iov, 0, sizeof(struct iovec)); | ||
724 | 721 | ||
725 | file = filp_open(path, flags, 0600); | 722 | if (IS_ERR(file)) { |
726 | if (IS_ERR(file) || !file || !file->f_dentry) { | 723 | pr_err("filp_open(%s) for ALUA metadata failed\n", path); |
727 | pr_err("filp_open(%s) for ALUA metadata failed\n", | ||
728 | path); | ||
729 | return -ENODEV; | 724 | return -ENODEV; |
730 | } | 725 | } |
731 | 726 | ret = kernel_write(file, md_buf, md_buf_len, 0); | |
732 | iov[0].iov_base = &md_buf[0]; | 727 | if (ret < 0) |
733 | iov[0].iov_len = md_buf_len; | ||
734 | |||
735 | old_fs = get_fs(); | ||
736 | set_fs(get_ds()); | ||
737 | ret = vfs_writev(file, &iov[0], 1, &file->f_pos); | ||
738 | set_fs(old_fs); | ||
739 | |||
740 | if (ret < 0) { | ||
741 | pr_err("Error writing ALUA metadata file: %s\n", path); | 728 | pr_err("Error writing ALUA metadata file: %s\n", path); |
742 | filp_close(file, NULL); | 729 | fput(file); |
743 | return -EIO; | 730 | return ret ? -EIO : 0; |
744 | } | ||
745 | filp_close(file, NULL); | ||
746 | |||
747 | return 0; | ||
748 | } | 731 | } |
749 | 732 | ||
750 | /* | 733 | /* |
diff --git a/drivers/target/target_core_file.c b/drivers/target/target_core_file.c index ca36a38eb274..d226c10a985b 100644 --- a/drivers/target/target_core_file.c +++ b/drivers/target/target_core_file.c | |||
@@ -270,7 +270,7 @@ static int fd_do_rw(struct se_cmd *cmd, struct scatterlist *sgl, | |||
270 | * the expected virt_size for struct file w/o a backing struct | 270 | * the expected virt_size for struct file w/o a backing struct |
271 | * block_device. | 271 | * block_device. |
272 | */ | 272 | */ |
273 | if (S_ISBLK(fd->f_dentry->d_inode->i_mode)) { | 273 | if (S_ISBLK(file_inode(fd)->i_mode)) { |
274 | if (ret < 0 || ret != cmd->data_length) { | 274 | if (ret < 0 || ret != cmd->data_length) { |
275 | pr_err("%s() returned %d, expecting %u for " | 275 | pr_err("%s() returned %d, expecting %u for " |
276 | "S_ISBLK\n", __func__, ret, | 276 | "S_ISBLK\n", __func__, ret, |
diff --git a/drivers/target/target_core_pr.c b/drivers/target/target_core_pr.c index 8e0290b38e43..3240f2cc81ef 100644 --- a/drivers/target/target_core_pr.c +++ b/drivers/target/target_core_pr.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <linux/slab.h> | 27 | #include <linux/slab.h> |
28 | #include <linux/spinlock.h> | 28 | #include <linux/spinlock.h> |
29 | #include <linux/list.h> | 29 | #include <linux/list.h> |
30 | #include <linux/file.h> | ||
30 | #include <scsi/scsi.h> | 31 | #include <scsi/scsi.h> |
31 | #include <scsi/scsi_cmnd.h> | 32 | #include <scsi/scsi_cmnd.h> |
32 | #include <asm/unaligned.h> | 33 | #include <asm/unaligned.h> |
@@ -1957,13 +1958,10 @@ static int __core_scsi3_write_aptpl_to_file( | |||
1957 | { | 1958 | { |
1958 | struct t10_wwn *wwn = &dev->t10_wwn; | 1959 | struct t10_wwn *wwn = &dev->t10_wwn; |
1959 | struct file *file; | 1960 | struct file *file; |
1960 | struct iovec iov[1]; | ||
1961 | mm_segment_t old_fs; | ||
1962 | int flags = O_RDWR | O_CREAT | O_TRUNC; | 1961 | int flags = O_RDWR | O_CREAT | O_TRUNC; |
1963 | char path[512]; | 1962 | char path[512]; |
1964 | int ret; | 1963 | int ret; |
1965 | 1964 | ||
1966 | memset(iov, 0, sizeof(struct iovec)); | ||
1967 | memset(path, 0, 512); | 1965 | memset(path, 0, 512); |
1968 | 1966 | ||
1969 | if (strlen(&wwn->unit_serial[0]) >= 512) { | 1967 | if (strlen(&wwn->unit_serial[0]) >= 512) { |
@@ -1974,31 +1972,22 @@ static int __core_scsi3_write_aptpl_to_file( | |||
1974 | 1972 | ||
1975 | snprintf(path, 512, "/var/target/pr/aptpl_%s", &wwn->unit_serial[0]); | 1973 | snprintf(path, 512, "/var/target/pr/aptpl_%s", &wwn->unit_serial[0]); |
1976 | file = filp_open(path, flags, 0600); | 1974 | file = filp_open(path, flags, 0600); |
1977 | if (IS_ERR(file) || !file || !file->f_dentry) { | 1975 | if (IS_ERR(file)) { |
1978 | pr_err("filp_open(%s) for APTPL metadata" | 1976 | pr_err("filp_open(%s) for APTPL metadata" |
1979 | " failed\n", path); | 1977 | " failed\n", path); |
1980 | return IS_ERR(file) ? PTR_ERR(file) : -ENOENT; | 1978 | return PTR_ERR(file); |
1981 | } | 1979 | } |
1982 | 1980 | ||
1983 | iov[0].iov_base = &buf[0]; | ||
1984 | if (!pr_aptpl_buf_len) | 1981 | if (!pr_aptpl_buf_len) |
1985 | iov[0].iov_len = (strlen(&buf[0]) + 1); /* Add extra for NULL */ | 1982 | pr_aptpl_buf_len = (strlen(&buf[0]) + 1); /* Add extra for NULL */ |
1986 | else | ||
1987 | iov[0].iov_len = pr_aptpl_buf_len; | ||
1988 | 1983 | ||
1989 | old_fs = get_fs(); | 1984 | ret = kernel_write(file, buf, pr_aptpl_buf_len, 0); |
1990 | set_fs(get_ds()); | ||
1991 | ret = vfs_writev(file, &iov[0], 1, &file->f_pos); | ||
1992 | set_fs(old_fs); | ||
1993 | 1985 | ||
1994 | if (ret < 0) { | 1986 | if (ret < 0) |
1995 | pr_debug("Error writing APTPL metadata file: %s\n", path); | 1987 | pr_debug("Error writing APTPL metadata file: %s\n", path); |
1996 | filp_close(file, NULL); | 1988 | fput(file); |
1997 | return -EIO; | ||
1998 | } | ||
1999 | filp_close(file, NULL); | ||
2000 | 1989 | ||
2001 | return 0; | 1990 | return ret ? -EIO : 0; |
2002 | } | 1991 | } |
2003 | 1992 | ||
2004 | static int | 1993 | static int |
diff --git a/drivers/tty/vt/vc_screen.c b/drivers/tty/vt/vc_screen.c index fa7268a93c06..e4ca345873c3 100644 --- a/drivers/tty/vt/vc_screen.c +++ b/drivers/tty/vt/vc_screen.c | |||
@@ -101,7 +101,7 @@ vcs_poll_data_get(struct file *file) | |||
101 | poll = kzalloc(sizeof(*poll), GFP_KERNEL); | 101 | poll = kzalloc(sizeof(*poll), GFP_KERNEL); |
102 | if (!poll) | 102 | if (!poll) |
103 | return NULL; | 103 | return NULL; |
104 | poll->cons_num = iminor(file->f_path.dentry->d_inode) & 127; | 104 | poll->cons_num = iminor(file_inode(file)) & 127; |
105 | init_waitqueue_head(&poll->waitq); | 105 | init_waitqueue_head(&poll->waitq); |
106 | poll->notifier.notifier_call = vcs_notifier; | 106 | poll->notifier.notifier_call = vcs_notifier; |
107 | if (register_vt_notifier(&poll->notifier) != 0) { | 107 | if (register_vt_notifier(&poll->notifier) != 0) { |
@@ -182,7 +182,7 @@ static loff_t vcs_lseek(struct file *file, loff_t offset, int orig) | |||
182 | int size; | 182 | int size; |
183 | 183 | ||
184 | console_lock(); | 184 | console_lock(); |
185 | size = vcs_size(file->f_path.dentry->d_inode); | 185 | size = vcs_size(file_inode(file)); |
186 | console_unlock(); | 186 | console_unlock(); |
187 | if (size < 0) | 187 | if (size < 0) |
188 | return size; | 188 | return size; |
@@ -208,7 +208,7 @@ static loff_t vcs_lseek(struct file *file, loff_t offset, int orig) | |||
208 | static ssize_t | 208 | static ssize_t |
209 | vcs_read(struct file *file, char __user *buf, size_t count, loff_t *ppos) | 209 | vcs_read(struct file *file, char __user *buf, size_t count, loff_t *ppos) |
210 | { | 210 | { |
211 | struct inode *inode = file->f_path.dentry->d_inode; | 211 | struct inode *inode = file_inode(file); |
212 | unsigned int currcons = iminor(inode); | 212 | unsigned int currcons = iminor(inode); |
213 | struct vc_data *vc; | 213 | struct vc_data *vc; |
214 | struct vcs_poll_data *poll; | 214 | struct vcs_poll_data *poll; |
@@ -386,7 +386,7 @@ unlock_out: | |||
386 | static ssize_t | 386 | static ssize_t |
387 | vcs_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos) | 387 | vcs_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos) |
388 | { | 388 | { |
389 | struct inode *inode = file->f_path.dentry->d_inode; | 389 | struct inode *inode = file_inode(file); |
390 | unsigned int currcons = iminor(inode); | 390 | unsigned int currcons = iminor(inode); |
391 | struct vc_data *vc; | 391 | struct vc_data *vc; |
392 | long pos; | 392 | long pos; |
diff --git a/drivers/usb/core/devices.c b/drivers/usb/core/devices.c index e33224e23770..2a3bbdf7eb94 100644 --- a/drivers/usb/core/devices.c +++ b/drivers/usb/core/devices.c | |||
@@ -665,7 +665,7 @@ static loff_t usb_device_lseek(struct file *file, loff_t offset, int orig) | |||
665 | { | 665 | { |
666 | loff_t ret; | 666 | loff_t ret; |
667 | 667 | ||
668 | mutex_lock(&file->f_dentry->d_inode->i_mutex); | 668 | mutex_lock(&file_inode(file)->i_mutex); |
669 | 669 | ||
670 | switch (orig) { | 670 | switch (orig) { |
671 | case 0: | 671 | case 0: |
@@ -681,7 +681,7 @@ static loff_t usb_device_lseek(struct file *file, loff_t offset, int orig) | |||
681 | ret = -EINVAL; | 681 | ret = -EINVAL; |
682 | } | 682 | } |
683 | 683 | ||
684 | mutex_unlock(&file->f_dentry->d_inode->i_mutex); | 684 | mutex_unlock(&file_inode(file)->i_mutex); |
685 | return ret; | 685 | return ret; |
686 | } | 686 | } |
687 | 687 | ||
diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c index 4a863fdbdccd..8823e98989fe 100644 --- a/drivers/usb/core/devio.c +++ b/drivers/usb/core/devio.c | |||
@@ -161,7 +161,7 @@ static loff_t usbdev_lseek(struct file *file, loff_t offset, int orig) | |||
161 | { | 161 | { |
162 | loff_t ret; | 162 | loff_t ret; |
163 | 163 | ||
164 | mutex_lock(&file->f_dentry->d_inode->i_mutex); | 164 | mutex_lock(&file_inode(file)->i_mutex); |
165 | 165 | ||
166 | switch (orig) { | 166 | switch (orig) { |
167 | case 0: | 167 | case 0: |
@@ -177,7 +177,7 @@ static loff_t usbdev_lseek(struct file *file, loff_t offset, int orig) | |||
177 | ret = -EINVAL; | 177 | ret = -EINVAL; |
178 | } | 178 | } |
179 | 179 | ||
180 | mutex_unlock(&file->f_dentry->d_inode->i_mutex); | 180 | mutex_unlock(&file_inode(file)->i_mutex); |
181 | return ret; | 181 | return ret; |
182 | } | 182 | } |
183 | 183 | ||
@@ -1971,7 +1971,7 @@ static long usbdev_do_ioctl(struct file *file, unsigned int cmd, | |||
1971 | void __user *p) | 1971 | void __user *p) |
1972 | { | 1972 | { |
1973 | struct dev_state *ps = file->private_data; | 1973 | struct dev_state *ps = file->private_data; |
1974 | struct inode *inode = file->f_path.dentry->d_inode; | 1974 | struct inode *inode = file_inode(file); |
1975 | struct usb_device *dev = ps->dev; | 1975 | struct usb_device *dev = ps->dev; |
1976 | int ret = -ENOTTY; | 1976 | int ret = -ENOTTY; |
1977 | 1977 | ||
diff --git a/drivers/usb/gadget/atmel_usba_udc.c b/drivers/usb/gadget/atmel_usba_udc.c index bc19496bcec0..b66130c97269 100644 --- a/drivers/usb/gadget/atmel_usba_udc.c +++ b/drivers/usb/gadget/atmel_usba_udc.c | |||
@@ -93,7 +93,7 @@ static ssize_t queue_dbg_read(struct file *file, char __user *buf, | |||
93 | if (!access_ok(VERIFY_WRITE, buf, nbytes)) | 93 | if (!access_ok(VERIFY_WRITE, buf, nbytes)) |
94 | return -EFAULT; | 94 | return -EFAULT; |
95 | 95 | ||
96 | mutex_lock(&file->f_dentry->d_inode->i_mutex); | 96 | mutex_lock(&file_inode(file)->i_mutex); |
97 | list_for_each_entry_safe(req, tmp_req, queue, queue) { | 97 | list_for_each_entry_safe(req, tmp_req, queue, queue) { |
98 | len = snprintf(tmpbuf, sizeof(tmpbuf), | 98 | len = snprintf(tmpbuf, sizeof(tmpbuf), |
99 | "%8p %08x %c%c%c %5d %c%c%c\n", | 99 | "%8p %08x %c%c%c %5d %c%c%c\n", |
@@ -120,7 +120,7 @@ static ssize_t queue_dbg_read(struct file *file, char __user *buf, | |||
120 | nbytes -= len; | 120 | nbytes -= len; |
121 | buf += len; | 121 | buf += len; |
122 | } | 122 | } |
123 | mutex_unlock(&file->f_dentry->d_inode->i_mutex); | 123 | mutex_unlock(&file_inode(file)->i_mutex); |
124 | 124 | ||
125 | return actual; | 125 | return actual; |
126 | } | 126 | } |
@@ -168,13 +168,13 @@ out: | |||
168 | static ssize_t regs_dbg_read(struct file *file, char __user *buf, | 168 | static ssize_t regs_dbg_read(struct file *file, char __user *buf, |
169 | size_t nbytes, loff_t *ppos) | 169 | size_t nbytes, loff_t *ppos) |
170 | { | 170 | { |
171 | struct inode *inode = file->f_dentry->d_inode; | 171 | struct inode *inode = file_inode(file); |
172 | int ret; | 172 | int ret; |
173 | 173 | ||
174 | mutex_lock(&inode->i_mutex); | 174 | mutex_lock(&inode->i_mutex); |
175 | ret = simple_read_from_buffer(buf, nbytes, ppos, | 175 | ret = simple_read_from_buffer(buf, nbytes, ppos, |
176 | file->private_data, | 176 | file->private_data, |
177 | file->f_dentry->d_inode->i_size); | 177 | file_inode(file)->i_size); |
178 | mutex_unlock(&inode->i_mutex); | 178 | mutex_unlock(&inode->i_mutex); |
179 | 179 | ||
180 | return ret; | 180 | return ret; |
diff --git a/drivers/usb/gadget/f_mass_storage.c b/drivers/usb/gadget/f_mass_storage.c index fc5c16ca5e0a..97666e8b1b95 100644 --- a/drivers/usb/gadget/f_mass_storage.c +++ b/drivers/usb/gadget/f_mass_storage.c | |||
@@ -978,7 +978,7 @@ static int do_synchronize_cache(struct fsg_common *common) | |||
978 | static void invalidate_sub(struct fsg_lun *curlun) | 978 | static void invalidate_sub(struct fsg_lun *curlun) |
979 | { | 979 | { |
980 | struct file *filp = curlun->filp; | 980 | struct file *filp = curlun->filp; |
981 | struct inode *inode = filp->f_path.dentry->d_inode; | 981 | struct inode *inode = file_inode(filp); |
982 | unsigned long rc; | 982 | unsigned long rc; |
983 | 983 | ||
984 | rc = invalidate_mapping_pages(inode->i_mapping, 0, -1); | 984 | rc = invalidate_mapping_pages(inode->i_mapping, 0, -1); |
diff --git a/drivers/usb/gadget/printer.c b/drivers/usb/gadget/printer.c index 35bcc83d1e04..bf7a56b6d48a 100644 --- a/drivers/usb/gadget/printer.c +++ b/drivers/usb/gadget/printer.c | |||
@@ -688,7 +688,7 @@ static int | |||
688 | printer_fsync(struct file *fd, loff_t start, loff_t end, int datasync) | 688 | printer_fsync(struct file *fd, loff_t start, loff_t end, int datasync) |
689 | { | 689 | { |
690 | struct printer_dev *dev = fd->private_data; | 690 | struct printer_dev *dev = fd->private_data; |
691 | struct inode *inode = fd->f_path.dentry->d_inode; | 691 | struct inode *inode = file_inode(fd); |
692 | unsigned long flags; | 692 | unsigned long flags; |
693 | int tx_list_empty; | 693 | int tx_list_empty; |
694 | 694 | ||
diff --git a/drivers/usb/gadget/rndis.c b/drivers/usb/gadget/rndis.c index e4192b887de9..d9297eebbf73 100644 --- a/drivers/usb/gadget/rndis.c +++ b/drivers/usb/gadget/rndis.c | |||
@@ -1065,7 +1065,7 @@ static int rndis_proc_show(struct seq_file *m, void *v) | |||
1065 | static ssize_t rndis_proc_write(struct file *file, const char __user *buffer, | 1065 | static ssize_t rndis_proc_write(struct file *file, const char __user *buffer, |
1066 | size_t count, loff_t *ppos) | 1066 | size_t count, loff_t *ppos) |
1067 | { | 1067 | { |
1068 | rndis_params *p = PDE(file->f_path.dentry->d_inode)->data; | 1068 | rndis_params *p = PDE(file_inode(file))->data; |
1069 | u32 speed = 0; | 1069 | u32 speed = 0; |
1070 | int i, fl_speed = 0; | 1070 | int i, fl_speed = 0; |
1071 | 1071 | ||
diff --git a/drivers/usb/gadget/storage_common.c b/drivers/usb/gadget/storage_common.c index 4ecbf8496f48..dbce3a9074e6 100644 --- a/drivers/usb/gadget/storage_common.c +++ b/drivers/usb/gadget/storage_common.c | |||
@@ -440,7 +440,7 @@ static int fsg_lun_open(struct fsg_lun *curlun, const char *filename) | |||
440 | if (!(filp->f_mode & FMODE_WRITE)) | 440 | if (!(filp->f_mode & FMODE_WRITE)) |
441 | ro = 1; | 441 | ro = 1; |
442 | 442 | ||
443 | inode = filp->f_path.dentry->d_inode; | 443 | inode = file_inode(filp); |
444 | if ((!S_ISREG(inode->i_mode) && !S_ISBLK(inode->i_mode))) { | 444 | if ((!S_ISREG(inode->i_mode) && !S_ISBLK(inode->i_mode))) { |
445 | LINFO(curlun, "invalid file type: %s\n", filename); | 445 | LINFO(curlun, "invalid file type: %s\n", filename); |
446 | goto out; | 446 | goto out; |
diff --git a/drivers/video/fb_defio.c b/drivers/video/fb_defio.c index 88cad6b8b479..900aa4ecd617 100644 --- a/drivers/video/fb_defio.c +++ b/drivers/video/fb_defio.c | |||
@@ -69,7 +69,7 @@ static int fb_deferred_io_fault(struct vm_area_struct *vma, | |||
69 | int fb_deferred_io_fsync(struct file *file, loff_t start, loff_t end, int datasync) | 69 | int fb_deferred_io_fsync(struct file *file, loff_t start, loff_t end, int datasync) |
70 | { | 70 | { |
71 | struct fb_info *info = file->private_data; | 71 | struct fb_info *info = file->private_data; |
72 | struct inode *inode = file->f_path.dentry->d_inode; | 72 | struct inode *inode = file_inode(file); |
73 | int err = filemap_write_and_wait_range(inode->i_mapping, start, end); | 73 | int err = filemap_write_and_wait_range(inode->i_mapping, start, end); |
74 | if (err) | 74 | if (err) |
75 | return err; | 75 | return err; |
diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c index dc61c12ecf8c..7c254084b6a0 100644 --- a/drivers/video/fbmem.c +++ b/drivers/video/fbmem.c | |||
@@ -727,7 +727,7 @@ static const struct file_operations fb_proc_fops = { | |||
727 | */ | 727 | */ |
728 | static struct fb_info *file_fb_info(struct file *file) | 728 | static struct fb_info *file_fb_info(struct file *file) |
729 | { | 729 | { |
730 | struct inode *inode = file->f_path.dentry->d_inode; | 730 | struct inode *inode = file_inode(file); |
731 | int fbidx = iminor(inode); | 731 | int fbidx = iminor(inode); |
732 | struct fb_info *info = registered_fb[fbidx]; | 732 | struct fb_info *info = registered_fb[fbidx]; |
733 | 733 | ||
diff --git a/drivers/video/msm/mdp.c b/drivers/video/msm/mdp.c index f2566c19e71c..113c7876c855 100644 --- a/drivers/video/msm/mdp.c +++ b/drivers/video/msm/mdp.c | |||
@@ -261,7 +261,7 @@ int get_img(struct mdp_img *img, struct fb_info *info, | |||
261 | if (f.file == NULL) | 261 | if (f.file == NULL) |
262 | return -1; | 262 | return -1; |
263 | 263 | ||
264 | if (MAJOR(f.file->f_dentry->d_inode->i_rdev) == FB_MAJOR) { | 264 | if (MAJOR(file_inode(f.file)->i_rdev) == FB_MAJOR) { |
265 | *start = info->fix.smem_start; | 265 | *start = info->fix.smem_start; |
266 | *len = info->fix.smem_len; | 266 | *len = info->fix.smem_len; |
267 | } else | 267 | } else |
diff --git a/drivers/watchdog/cpwd.c b/drivers/watchdog/cpwd.c index 11d55ce5ca81..70387582843f 100644 --- a/drivers/watchdog/cpwd.c +++ b/drivers/watchdog/cpwd.c | |||
@@ -411,7 +411,7 @@ static long cpwd_ioctl(struct file *file, unsigned int cmd, unsigned long arg) | |||
411 | .identity = DRIVER_NAME, | 411 | .identity = DRIVER_NAME, |
412 | }; | 412 | }; |
413 | void __user *argp = (void __user *)arg; | 413 | void __user *argp = (void __user *)arg; |
414 | struct inode *inode = file->f_path.dentry->d_inode; | 414 | struct inode *inode = file_inode(file); |
415 | int index = iminor(inode) - WD0_MINOR; | 415 | int index = iminor(inode) - WD0_MINOR; |
416 | struct cpwd *p = cpwd_device; | 416 | struct cpwd *p = cpwd_device; |
417 | int setopt = 0; | 417 | int setopt = 0; |
@@ -499,7 +499,7 @@ static long cpwd_compat_ioctl(struct file *file, unsigned int cmd, | |||
499 | static ssize_t cpwd_write(struct file *file, const char __user *buf, | 499 | static ssize_t cpwd_write(struct file *file, const char __user *buf, |
500 | size_t count, loff_t *ppos) | 500 | size_t count, loff_t *ppos) |
501 | { | 501 | { |
502 | struct inode *inode = file->f_path.dentry->d_inode; | 502 | struct inode *inode = file_inode(file); |
503 | struct cpwd *p = cpwd_device; | 503 | struct cpwd *p = cpwd_device; |
504 | int index = iminor(inode); | 504 | int index = iminor(inode); |
505 | 505 | ||
diff --git a/drivers/xen/xenfs/super.c b/drivers/xen/xenfs/super.c index 459b9ac45cf5..ec0abb6df3c3 100644 --- a/drivers/xen/xenfs/super.c +++ b/drivers/xen/xenfs/super.c | |||
@@ -24,47 +24,6 @@ | |||
24 | MODULE_DESCRIPTION("Xen filesystem"); | 24 | MODULE_DESCRIPTION("Xen filesystem"); |
25 | MODULE_LICENSE("GPL"); | 25 | MODULE_LICENSE("GPL"); |
26 | 26 | ||
27 | static struct inode *xenfs_make_inode(struct super_block *sb, int mode) | ||
28 | { | ||
29 | struct inode *ret = new_inode(sb); | ||
30 | |||
31 | if (ret) { | ||
32 | ret->i_mode = mode; | ||
33 | ret->i_uid = GLOBAL_ROOT_UID; | ||
34 | ret->i_gid = GLOBAL_ROOT_GID; | ||
35 | ret->i_blocks = 0; | ||
36 | ret->i_atime = ret->i_mtime = ret->i_ctime = CURRENT_TIME; | ||
37 | } | ||
38 | return ret; | ||
39 | } | ||
40 | |||
41 | static struct dentry *xenfs_create_file(struct super_block *sb, | ||
42 | struct dentry *parent, | ||
43 | const char *name, | ||
44 | const struct file_operations *fops, | ||
45 | void *data, | ||
46 | int mode) | ||
47 | { | ||
48 | struct dentry *dentry; | ||
49 | struct inode *inode; | ||
50 | |||
51 | dentry = d_alloc_name(parent, name); | ||
52 | if (!dentry) | ||
53 | return NULL; | ||
54 | |||
55 | inode = xenfs_make_inode(sb, S_IFREG | mode); | ||
56 | if (!inode) { | ||
57 | dput(dentry); | ||
58 | return NULL; | ||
59 | } | ||
60 | |||
61 | inode->i_fop = fops; | ||
62 | inode->i_private = data; | ||
63 | |||
64 | d_add(dentry, inode); | ||
65 | return dentry; | ||
66 | } | ||
67 | |||
68 | static ssize_t capabilities_read(struct file *file, char __user *buf, | 27 | static ssize_t capabilities_read(struct file *file, char __user *buf, |
69 | size_t size, loff_t *off) | 28 | size_t size, loff_t *off) |
70 | { | 29 | { |
@@ -84,26 +43,23 @@ static const struct file_operations capabilities_file_ops = { | |||
84 | static int xenfs_fill_super(struct super_block *sb, void *data, int silent) | 43 | static int xenfs_fill_super(struct super_block *sb, void *data, int silent) |
85 | { | 44 | { |
86 | static struct tree_descr xenfs_files[] = { | 45 | static struct tree_descr xenfs_files[] = { |
87 | [1] = {}, | 46 | [2] = { "xenbus", &xen_xenbus_fops, S_IRUSR|S_IWUSR }, |
88 | { "xenbus", &xen_xenbus_fops, S_IRUSR|S_IWUSR }, | ||
89 | { "capabilities", &capabilities_file_ops, S_IRUGO }, | 47 | { "capabilities", &capabilities_file_ops, S_IRUGO }, |
90 | { "privcmd", &xen_privcmd_fops, S_IRUSR|S_IWUSR }, | 48 | { "privcmd", &xen_privcmd_fops, S_IRUSR|S_IWUSR }, |
91 | {""}, | 49 | {""}, |
92 | }; | 50 | }; |
93 | int rc; | ||
94 | 51 | ||
95 | rc = simple_fill_super(sb, XENFS_SUPER_MAGIC, xenfs_files); | 52 | static struct tree_descr xenfs_init_files[] = { |
96 | if (rc < 0) | 53 | [2] = { "xenbus", &xen_xenbus_fops, S_IRUSR|S_IWUSR }, |
97 | return rc; | 54 | { "capabilities", &capabilities_file_ops, S_IRUGO }, |
98 | 55 | { "privcmd", &xen_privcmd_fops, S_IRUSR|S_IWUSR }, | |
99 | if (xen_initial_domain()) { | 56 | { "xsd_kva", &xsd_kva_file_ops, S_IRUSR|S_IWUSR}, |
100 | xenfs_create_file(sb, sb->s_root, "xsd_kva", | 57 | { "xsd_port", &xsd_port_file_ops, S_IRUSR|S_IWUSR}, |
101 | &xsd_kva_file_ops, NULL, S_IRUSR|S_IWUSR); | 58 | {""}, |
102 | xenfs_create_file(sb, sb->s_root, "xsd_port", | 59 | }; |
103 | &xsd_port_file_ops, NULL, S_IRUSR|S_IWUSR); | ||
104 | } | ||
105 | 60 | ||
106 | return rc; | 61 | return simple_fill_super(sb, XENFS_SUPER_MAGIC, |
62 | xen_initial_domain() ? xenfs_init_files : xenfs_files); | ||
107 | } | 63 | } |
108 | 64 | ||
109 | static struct dentry *xenfs_mount(struct file_system_type *fs_type, | 65 | static struct dentry *xenfs_mount(struct file_system_type *fs_type, |
diff --git a/drivers/zorro/proc.c b/drivers/zorro/proc.c index 988880dcee75..73b33837e12c 100644 --- a/drivers/zorro/proc.c +++ b/drivers/zorro/proc.c | |||
@@ -22,7 +22,7 @@ static loff_t | |||
22 | proc_bus_zorro_lseek(struct file *file, loff_t off, int whence) | 22 | proc_bus_zorro_lseek(struct file *file, loff_t off, int whence) |
23 | { | 23 | { |
24 | loff_t new = -1; | 24 | loff_t new = -1; |
25 | struct inode *inode = file->f_path.dentry->d_inode; | 25 | struct inode *inode = file_inode(file); |
26 | 26 | ||
27 | mutex_lock(&inode->i_mutex); | 27 | mutex_lock(&inode->i_mutex); |
28 | switch (whence) { | 28 | switch (whence) { |
@@ -47,7 +47,7 @@ proc_bus_zorro_lseek(struct file *file, loff_t off, int whence) | |||
47 | static ssize_t | 47 | static ssize_t |
48 | proc_bus_zorro_read(struct file *file, char __user *buf, size_t nbytes, loff_t *ppos) | 48 | proc_bus_zorro_read(struct file *file, char __user *buf, size_t nbytes, loff_t *ppos) |
49 | { | 49 | { |
50 | struct inode *ino = file->f_path.dentry->d_inode; | 50 | struct inode *ino = file_inode(file); |
51 | struct proc_dir_entry *dp = PDE(ino); | 51 | struct proc_dir_entry *dp = PDE(ino); |
52 | struct zorro_dev *z = dp->data; | 52 | struct zorro_dev *z = dp->data; |
53 | struct ConfigDev cd; | 53 | struct ConfigDev cd; |