summaryrefslogtreecommitdiff
path: root/fs/char_dev.c
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2013-09-22 22:17:15 +0400
committerAl Viro <viro@zeniv.linux.org.uk>2013-10-25 07:34:53 +0400
commite84f9e57b90ca89664d733a7cef19aa7ccd832f3 (patch)
tree2766cbae82e38a4356b161a7f48abfd9e4db56ce /fs/char_dev.c
parent7b00ed6fe6321547b9d51f5bfb30e7b5932e6889 (diff)
downloadlinux-e84f9e57b90ca89664d733a7cef19aa7ccd832f3.tar.xz
consolidate the reassignments of ->f_op in ->open() instances
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/char_dev.c')
-rw-r--r--fs/char_dev.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/fs/char_dev.c b/fs/char_dev.c
index afc2bb691780..94b5f60076da 100644
--- a/fs/char_dev.c
+++ b/fs/char_dev.c
@@ -368,6 +368,7 @@ void cdev_put(struct cdev *p)
*/
static int chrdev_open(struct inode *inode, struct file *filp)
{
+ const struct file_operations *fops;
struct cdev *p;
struct cdev *new = NULL;
int ret = 0;
@@ -400,10 +401,11 @@ static int chrdev_open(struct inode *inode, struct file *filp)
return ret;
ret = -ENXIO;
- filp->f_op = fops_get(p->ops);
- if (!filp->f_op)
+ fops = fops_get(p->ops);
+ if (!fops)
goto out_cdev_put;
+ replace_fops(filp, fops);
if (filp->f_op->open) {
ret = filp->f_op->open(inode, filp);
if (ret)