kill pin_put()
authorAl Viro <viro@zeniv.linux.org.uk>
Sat, 10 Jan 2015 01:40:02 +0000 (20:40 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Mon, 26 Jan 2015 04:16:28 +0000 (23:16 -0500)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/fs_pin.c
include/linux/fs_pin.h
kernel/acct.c

index 9368236..f173313 100644 (file)
@@ -4,19 +4,8 @@
 #include "internal.h"
 #include "mount.h"
 
-static void pin_free_rcu(struct rcu_head *head)
-{
-       kfree(container_of(head, struct fs_pin, rcu));
-}
-
 static DEFINE_SPINLOCK(pin_lock);
 
-void pin_put(struct fs_pin *p)
-{
-       if (atomic_long_dec_and_test(&p->count))
-               call_rcu(&p->rcu, pin_free_rcu);
-}
-
 void pin_remove(struct fs_pin *pin)
 {
        spin_lock(&pin_lock);
index f66525e..68a54b7 100644 (file)
@@ -12,6 +12,5 @@ struct fs_pin {
        void (*kill)(struct fs_pin *);
 };
 
-void pin_put(struct fs_pin *);
 void pin_remove(struct fs_pin *);
 void pin_insert(struct fs_pin *, struct vfsmount *);
index 33738ef..7bb9e65 100644 (file)
@@ -124,6 +124,12 @@ out:
        return acct->active;
 }
 
+static void acct_put(struct bsd_acct_struct *p)
+{
+       if (atomic_long_dec_and_test(&p->pin.count))
+               kfree_rcu(p, pin.rcu);
+}
+
 static struct bsd_acct_struct *acct_get(struct pid_namespace *ns)
 {
        struct bsd_acct_struct *res;
@@ -144,7 +150,7 @@ again:
        mutex_lock(&res->lock);
        if (!res->ns) {
                mutex_unlock(&res->lock);
-               pin_put(&res->pin);
+               acct_put(res);
                goto again;
        }
        return res;
@@ -175,7 +181,7 @@ static void acct_kill(struct bsd_acct_struct *acct,
                acct->ns = NULL;
                atomic_long_dec(&acct->pin.count);
                mutex_unlock(&acct->lock);
-               pin_put(&acct->pin);
+               acct_put(acct);
        }
 }
 
@@ -186,7 +192,7 @@ static void acct_pin_kill(struct fs_pin *pin)
        mutex_lock(&acct->lock);
        if (!acct->ns) {
                mutex_unlock(&acct->lock);
-               pin_put(pin);
+               acct_put(acct);
                acct = NULL;
        }
        acct_kill(acct, NULL);
@@ -576,7 +582,7 @@ static void slow_acct_process(struct pid_namespace *ns)
                if (acct) {
                        do_acct_process(acct);
                        mutex_unlock(&acct->lock);
-                       pin_put(&acct->pin);
+                       acct_put(acct);
                }
        }
 }