From: "Eric W. Biederman" <ebied...@xmission.com>

[ Upstream commit 0afa5ca82212247456f9de1468b595a111fee633 ]

I about to need and use the same functionality for pid based
inodes and there is no point in adding a second field when
this field is already here and serving the same purporse.

Just give the field a generic name so it is clear that
it is no longer sysctl specific.

Also for good measure initialize sibling_inodes when
proc_inode is initialized.

Signed-off-by: Eric W. Biederman <ebied...@xmission.com>
Cc: <sta...@vger.kernel.org> # 4.9.x
Signed-off-by: Wen Yang <weny...@linux.alibaba.com>
---
 fs/proc/inode.c       | 1 +
 fs/proc/internal.h    | 2 +-
 fs/proc/proc_sysctl.c | 8 ++++----
 3 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/fs/proc/inode.c b/fs/proc/inode.c
index a289349..14d9c1d 100644
--- a/fs/proc/inode.c
+++ b/fs/proc/inode.c
@@ -67,6 +67,7 @@ static struct inode *proc_alloc_inode(struct super_block *sb)
        ei->pde = NULL;
        ei->sysctl = NULL;
        ei->sysctl_entry = NULL;
+       INIT_HLIST_NODE(&ei->sibling_inodes);
        ei->ns_ops = NULL;
        inode = &ei->vfs_inode;
        return inode;
diff --git a/fs/proc/internal.h b/fs/proc/internal.h
index 103435f..409b5c5 100644
--- a/fs/proc/internal.h
+++ b/fs/proc/internal.h
@@ -65,7 +65,7 @@ struct proc_inode {
        struct proc_dir_entry *pde;
        struct ctl_table_header *sysctl;
        struct ctl_table *sysctl_entry;
-       struct hlist_node sysctl_inodes;
+       struct hlist_node sibling_inodes;
        const struct proc_ns_operations *ns_ops;
        struct inode vfs_inode;
 };
diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c
index 191573a..671490e 100644
--- a/fs/proc/proc_sysctl.c
+++ b/fs/proc/proc_sysctl.c
@@ -272,9 +272,9 @@ static void proc_sys_prune_dcache(struct ctl_table_header 
*head)
                node = hlist_first_rcu(&head->inodes);
                if (!node)
                        break;
-               ei = hlist_entry(node, struct proc_inode, sysctl_inodes);
+               ei = hlist_entry(node, struct proc_inode, sibling_inodes);
                spin_lock(&sysctl_lock);
-               hlist_del_init_rcu(&ei->sysctl_inodes);
+               hlist_del_init_rcu(&ei->sibling_inodes);
                spin_unlock(&sysctl_lock);
 
                inode = &ei->vfs_inode;
@@ -480,7 +480,7 @@ static struct inode *proc_sys_make_inode(struct super_block 
*sb,
        }
        ei->sysctl = head;
        ei->sysctl_entry = table;
-       hlist_add_head_rcu(&ei->sysctl_inodes, &head->inodes);
+       hlist_add_head_rcu(&ei->sibling_inodes, &head->inodes);
        head->count++;
        spin_unlock(&sysctl_lock);
 
@@ -511,7 +511,7 @@ static struct inode *proc_sys_make_inode(struct super_block 
*sb,
 void proc_sys_evict_inode(struct inode *inode, struct ctl_table_header *head)
 {
        spin_lock(&sysctl_lock);
-       hlist_del_init_rcu(&PROC_I(inode)->sysctl_inodes);
+       hlist_del_init_rcu(&PROC_I(inode)->sibling_inodes);
        if (!--head->count)
                kfree_rcu(head, rcu);
        spin_unlock(&sysctl_lock);
-- 
1.8.3.1

Reply via email to