diff options
Diffstat (limited to 'fs/proc/inode.c')
-rw-r--r-- | fs/proc/inode.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/fs/proc/inode.c b/fs/proc/inode.c index 10360b268794..d0e9b9b6223e 100644 --- a/fs/proc/inode.c +++ b/fs/proc/inode.c | |||
@@ -393,25 +393,25 @@ static const struct file_operations proc_reg_file_ops_no_compat = { | |||
393 | }; | 393 | }; |
394 | #endif | 394 | #endif |
395 | 395 | ||
396 | static void proc_put_link(void *p) | ||
397 | { | ||
398 | unuse_pde(p); | ||
399 | } | ||
400 | |||
396 | static const char *proc_get_link(struct dentry *dentry, | 401 | static const char *proc_get_link(struct dentry *dentry, |
397 | struct inode *inode, void **cookie) | 402 | struct inode *inode, |
403 | struct delayed_call *done) | ||
398 | { | 404 | { |
399 | struct proc_dir_entry *pde = PDE(inode); | 405 | struct proc_dir_entry *pde = PDE(inode); |
400 | if (unlikely(!use_pde(pde))) | 406 | if (unlikely(!use_pde(pde))) |
401 | return ERR_PTR(-EINVAL); | 407 | return ERR_PTR(-EINVAL); |
402 | *cookie = pde; | 408 | set_delayed_call(done, proc_put_link, pde); |
403 | return pde->data; | 409 | return pde->data; |
404 | } | 410 | } |
405 | 411 | ||
406 | static void proc_put_link(struct inode *unused, void *p) | ||
407 | { | ||
408 | unuse_pde(p); | ||
409 | } | ||
410 | |||
411 | const struct inode_operations proc_link_inode_operations = { | 412 | const struct inode_operations proc_link_inode_operations = { |
412 | .readlink = generic_readlink, | 413 | .readlink = generic_readlink, |
413 | .get_link = proc_get_link, | 414 | .get_link = proc_get_link, |
414 | .put_link = proc_put_link, | ||
415 | }; | 415 | }; |
416 | 416 | ||
417 | struct inode *proc_get_inode(struct super_block *sb, struct proc_dir_entry *de) | 417 | struct inode *proc_get_inode(struct super_block *sb, struct proc_dir_entry *de) |