diff options
Diffstat (limited to 'fs/debugfs')
-rw-r--r-- | fs/debugfs/file.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/debugfs/file.c b/fs/debugfs/file.c index 9c1c9a01b7e5..592059f88e04 100644 --- a/fs/debugfs/file.c +++ b/fs/debugfs/file.c | |||
@@ -127,7 +127,6 @@ static int open_proxy_open(struct inode *inode, struct file *filp) | |||
127 | r = real_fops->open(inode, filp); | 127 | r = real_fops->open(inode, filp); |
128 | 128 | ||
129 | out: | 129 | out: |
130 | fops_put(real_fops); | ||
131 | debugfs_use_file_finish(srcu_idx); | 130 | debugfs_use_file_finish(srcu_idx); |
132 | return r; | 131 | return r; |
133 | } | 132 | } |
@@ -262,8 +261,10 @@ static int full_proxy_open(struct inode *inode, struct file *filp) | |||
262 | 261 | ||
263 | if (real_fops->open) { | 262 | if (real_fops->open) { |
264 | r = real_fops->open(inode, filp); | 263 | r = real_fops->open(inode, filp); |
265 | 264 | if (r) { | |
266 | if (filp->f_op != proxy_fops) { | 265 | replace_fops(filp, d_inode(dentry)->i_fop); |
266 | goto free_proxy; | ||
267 | } else if (filp->f_op != proxy_fops) { | ||
267 | /* No protection against file removal anymore. */ | 268 | /* No protection against file removal anymore. */ |
268 | WARN(1, "debugfs file owner replaced proxy fops: %pd", | 269 | WARN(1, "debugfs file owner replaced proxy fops: %pd", |
269 | dentry); | 270 | dentry); |