summaryrefslogtreecommitdiffstats
path: root/fs/proc/inode.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/proc/inode.c')
-rw-r--r--fs/proc/inode.c16
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
396static void proc_put_link(void *p)
397{
398 unuse_pde(p);
399}
400
396static const char *proc_get_link(struct dentry *dentry, 401static 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
406static void proc_put_link(struct inode *unused, void *p)
407{
408 unuse_pde(p);
409}
410
411const struct inode_operations proc_link_inode_operations = { 412const 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
417struct inode *proc_get_inode(struct super_block *sb, struct proc_dir_entry *de) 417struct inode *proc_get_inode(struct super_block *sb, struct proc_dir_entry *de)