summaryrefslogtreecommitdiff
path: root/fs
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2013-09-22 14:17:15 -0400
committerChanho Park <chanho61.park@samsung.com>2014-08-08 15:21:36 +0900
commit0e7b6727c239125748e9ea9a720c96b9e2885dad (patch)
tree892ddf0f5a3e60776ccdb399b63a73635fd09906 /fs
parentad64b6a2993707c648122fda6be02e747e8dcdfb (diff)
downloadlinux-3.10-0e7b6727c239125748e9ea9a720c96b9e2885dad.tar.gz
linux-3.10-0e7b6727c239125748e9ea9a720c96b9e2885dad.tar.bz2
linux-3.10-0e7b6727c239125748e9ea9a720c96b9e2885dad.zip
upstream: consolidate the reassignments of ->f_op in ->open() instances
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs')
-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 afc2bb69178..94b5f60076d 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)