diff options
author | Lai Jiangshan <laijs@cn.fujitsu.com> | 2011-03-18 12:09:35 +0800 |
---|---|---|
committer | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2011-07-20 14:10:16 -0700 |
commit | 693a8b6eecce1a0cfe91a469e85c56016dc1cc53 (patch) | |
tree | eb96b13432d0e8933b71ed84f5bd5ee4df6a5687 | |
parent | 449a68cc656fddeda448e324c57062a19cf451b9 (diff) | |
download | linux-stable-693a8b6eecce1a0cfe91a469e85c56016dc1cc53.tar.gz linux-stable-693a8b6eecce1a0cfe91a469e85c56016dc1cc53.tar.bz2 linux-stable-693a8b6eecce1a0cfe91a469e85c56016dc1cc53.zip |
ipc,rcu: Convert call_rcu(free_un) to kfree_rcu()
The rcu callback free_un() just calls a kfree(),
so we use kfree_rcu() instead of the call_rcu(free_un).
Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Manfred Spraul <manfred@colorfullife.com>
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
-rw-r--r-- | ipc/sem.c | 10 |
1 files changed, 2 insertions, 8 deletions
diff --git a/ipc/sem.c b/ipc/sem.c index 34193ed69fbe..8b929e6a6eda 100644 --- a/ipc/sem.c +++ b/ipc/sem.c @@ -689,12 +689,6 @@ static int count_semzcnt (struct sem_array * sma, ushort semnum) return semzcnt; } -static void free_un(struct rcu_head *head) -{ - struct sem_undo *un = container_of(head, struct sem_undo, rcu); - kfree(un); -} - /* Free a semaphore set. freeary() is called with sem_ids.rw_mutex locked * as a writer and the spinlock for this semaphore set hold. sem_ids.rw_mutex * remains locked on exit. @@ -714,7 +708,7 @@ static void freeary(struct ipc_namespace *ns, struct kern_ipc_perm *ipcp) un->semid = -1; list_del_rcu(&un->list_proc); spin_unlock(&un->ulp->lock); - call_rcu(&un->rcu, free_un); + kfree_rcu(un, rcu); } /* Wake up all pending processes and let them fail with EIDRM. */ @@ -1612,7 +1606,7 @@ void exit_sem(struct task_struct *tsk) sem_unlock(sma); wake_up_sem_queue_do(&tasks); - call_rcu(&un->rcu, free_un); + kfree_rcu(un, rcu); } kfree(ulp); } |