So we can use them from proc_handler functions in user_table

Signed-off-by: Albert Vaca Cintora <albertv...@gmail.com>
---
 kernel/ucount.c | 122 ++++++++++++++++++++++++------------------------
 1 file changed, 61 insertions(+), 61 deletions(-)

diff --git a/kernel/ucount.c b/kernel/ucount.c
index f48d1b6376a4..909c856e809f 100644
--- a/kernel/ucount.c
+++ b/kernel/ucount.c
@@ -57,6 +57,67 @@ static struct ctl_table_root set_root = {
        .permissions = set_permissions,
 };
 
+static struct ucounts *find_ucounts(struct user_namespace *ns, kuid_t uid, 
struct hlist_head *hashent)
+{
+       struct ucounts *ucounts;
+
+       hlist_for_each_entry(ucounts, hashent, node) {
+               if (uid_eq(ucounts->uid, uid) && (ucounts->ns == ns))
+                       return ucounts;
+       }
+       return NULL;
+}
+
+static struct ucounts *get_ucounts(struct user_namespace *ns, kuid_t uid)
+{
+       struct hlist_head *hashent = ucounts_hashentry(ns, uid);
+       struct ucounts *ucounts, *new;
+
+       spin_lock_irq(&ucounts_lock);
+       ucounts = find_ucounts(ns, uid, hashent);
+       if (!ucounts) {
+               spin_unlock_irq(&ucounts_lock);
+
+               new = kzalloc(sizeof(*new), GFP_KERNEL);
+               if (!new)
+                       return NULL;
+
+               new->ns = ns;
+               new->uid = uid;
+               new->count = 0;
+
+               spin_lock_irq(&ucounts_lock);
+               ucounts = find_ucounts(ns, uid, hashent);
+               if (ucounts) {
+                       kfree(new);
+               } else {
+                       hlist_add_head(&new->node, hashent);
+                       ucounts = new;
+               }
+       }
+       if (ucounts->count == INT_MAX)
+               ucounts = NULL;
+       else
+               ucounts->count += 1;
+       spin_unlock_irq(&ucounts_lock);
+       return ucounts;
+}
+
+static void put_ucounts(struct ucounts *ucounts)
+{
+       unsigned long flags;
+
+       spin_lock_irqsave(&ucounts_lock, flags);
+       ucounts->count -= 1;
+       if (!ucounts->count)
+               hlist_del_init(&ucounts->node);
+       else
+               ucounts = NULL;
+       spin_unlock_irqrestore(&ucounts_lock, flags);
+
+       kfree(ucounts);
+}
+
 static int zero = 0;
 static int int_max = INT_MAX;
 #define UCOUNT_ENTRY(name)                             \
@@ -118,67 +179,6 @@ void retire_userns_sysctls(struct user_namespace *ns)
 #endif
 }
 
-static struct ucounts *find_ucounts(struct user_namespace *ns, kuid_t uid, 
struct hlist_head *hashent)
-{
-       struct ucounts *ucounts;
-
-       hlist_for_each_entry(ucounts, hashent, node) {
-               if (uid_eq(ucounts->uid, uid) && (ucounts->ns == ns))
-                       return ucounts;
-       }
-       return NULL;
-}
-
-static struct ucounts *get_ucounts(struct user_namespace *ns, kuid_t uid)
-{
-       struct hlist_head *hashent = ucounts_hashentry(ns, uid);
-       struct ucounts *ucounts, *new;
-
-       spin_lock_irq(&ucounts_lock);
-       ucounts = find_ucounts(ns, uid, hashent);
-       if (!ucounts) {
-               spin_unlock_irq(&ucounts_lock);
-
-               new = kzalloc(sizeof(*new), GFP_KERNEL);
-               if (!new)
-                       return NULL;
-
-               new->ns = ns;
-               new->uid = uid;
-               new->count = 0;
-
-               spin_lock_irq(&ucounts_lock);
-               ucounts = find_ucounts(ns, uid, hashent);
-               if (ucounts) {
-                       kfree(new);
-               } else {
-                       hlist_add_head(&new->node, hashent);
-                       ucounts = new;
-               }
-       }
-       if (ucounts->count == INT_MAX)
-               ucounts = NULL;
-       else
-               ucounts->count += 1;
-       spin_unlock_irq(&ucounts_lock);
-       return ucounts;
-}
-
-static void put_ucounts(struct ucounts *ucounts)
-{
-       unsigned long flags;
-
-       spin_lock_irqsave(&ucounts_lock, flags);
-       ucounts->count -= 1;
-       if (!ucounts->count)
-               hlist_del_init(&ucounts->node);
-       else
-               ucounts = NULL;
-       spin_unlock_irqrestore(&ucounts_lock, flags);
-
-       kfree(ucounts);
-}
-
 static inline bool atomic_inc_below(atomic_t *v, int u)
 {
        int c, old;
-- 
2.21.0

Reply via email to