Loading fs/proc/generic.c +0 −12 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ #include <linux/mount.h> #include <linux/init.h> #include <linux/idr.h> #include <linux/namei.h> #include <linux/bitops.h> #include <linux/spinlock.h> #include <linux/completion.h> Loading Loading @@ -223,17 +222,6 @@ void proc_free_inum(unsigned int inum) spin_unlock_irqrestore(&proc_inum_lock, flags); } static void *proc_follow_link(struct dentry *dentry, struct nameidata *nd) { nd_set_link(nd, __PDE_DATA(dentry->d_inode)); return NULL; } static const struct inode_operations proc_link_inode_operations = { .readlink = generic_readlink, .follow_link = proc_follow_link, }; /* * Don't create negative dentries here, return -ENOENT by hand * instead. Loading fs/proc/inode.c +21 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ #include <linux/slab.h> #include <linux/mount.h> #include <linux/magic.h> #include <linux/namei.h> #include <asm/uaccess.h> Loading Loading @@ -393,6 +394,26 @@ static const struct file_operations proc_reg_file_ops_no_compat = { }; #endif static void *proc_follow_link(struct dentry *dentry, struct nameidata *nd) { struct proc_dir_entry *pde = PDE(dentry->d_inode); if (unlikely(!use_pde(pde))) return ERR_PTR(-EINVAL); nd_set_link(nd, pde->data); return pde; } static void proc_put_link(struct dentry *dentry, struct nameidata *nd, void *p) { unuse_pde(p); } const struct inode_operations proc_link_inode_operations = { .readlink = generic_readlink, .follow_link = proc_follow_link, .put_link = proc_put_link, }; struct inode *proc_get_inode(struct super_block *sb, struct proc_dir_entry *de) { struct inode *inode = new_inode_pseudo(sb); Loading fs/proc/internal.h +1 −0 Original line number Diff line number Diff line Loading @@ -200,6 +200,7 @@ struct pde_opener { int closing; struct completion *c; }; extern const struct inode_operations proc_link_inode_operations; extern const struct inode_operations proc_pid_link_inode_operations; Loading Loading
fs/proc/generic.c +0 −12 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ #include <linux/mount.h> #include <linux/init.h> #include <linux/idr.h> #include <linux/namei.h> #include <linux/bitops.h> #include <linux/spinlock.h> #include <linux/completion.h> Loading Loading @@ -223,17 +222,6 @@ void proc_free_inum(unsigned int inum) spin_unlock_irqrestore(&proc_inum_lock, flags); } static void *proc_follow_link(struct dentry *dentry, struct nameidata *nd) { nd_set_link(nd, __PDE_DATA(dentry->d_inode)); return NULL; } static const struct inode_operations proc_link_inode_operations = { .readlink = generic_readlink, .follow_link = proc_follow_link, }; /* * Don't create negative dentries here, return -ENOENT by hand * instead. Loading
fs/proc/inode.c +21 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ #include <linux/slab.h> #include <linux/mount.h> #include <linux/magic.h> #include <linux/namei.h> #include <asm/uaccess.h> Loading Loading @@ -393,6 +394,26 @@ static const struct file_operations proc_reg_file_ops_no_compat = { }; #endif static void *proc_follow_link(struct dentry *dentry, struct nameidata *nd) { struct proc_dir_entry *pde = PDE(dentry->d_inode); if (unlikely(!use_pde(pde))) return ERR_PTR(-EINVAL); nd_set_link(nd, pde->data); return pde; } static void proc_put_link(struct dentry *dentry, struct nameidata *nd, void *p) { unuse_pde(p); } const struct inode_operations proc_link_inode_operations = { .readlink = generic_readlink, .follow_link = proc_follow_link, .put_link = proc_put_link, }; struct inode *proc_get_inode(struct super_block *sb, struct proc_dir_entry *de) { struct inode *inode = new_inode_pseudo(sb); Loading
fs/proc/internal.h +1 −0 Original line number Diff line number Diff line Loading @@ -200,6 +200,7 @@ struct pde_opener { int closing; struct completion *c; }; extern const struct inode_operations proc_link_inode_operations; extern const struct inode_operations proc_pid_link_inode_operations; Loading