ipc,rcu: Convert call_rcu(ipc_immediate_free) to kfree_rcu()
The rcu callback ipc_immediate_free() just calls a kfree(), so we use kfree_rcu() instead of the call_rcu(ipc_immediate_free). 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> Reviewed-by: Josh Triplett <josh@joshtriplett.org>
This commit is contained in:
parent
693a8b6eec
commit
d4ee9aa33d
16
ipc/util.c
16
ipc/util.c
|
@ -579,19 +579,6 @@ static void ipc_schedule_free(struct rcu_head *head)
|
|||
schedule_work(&sched->work);
|
||||
}
|
||||
|
||||
/**
|
||||
* ipc_immediate_free - free ipc + rcu space
|
||||
* @head: RCU callback structure that contains pointer to be freed
|
||||
*
|
||||
* Free from the RCU callback context.
|
||||
*/
|
||||
static void ipc_immediate_free(struct rcu_head *head)
|
||||
{
|
||||
struct ipc_rcu_grace *free =
|
||||
container_of(head, struct ipc_rcu_grace, rcu);
|
||||
kfree(free);
|
||||
}
|
||||
|
||||
void ipc_rcu_putref(void *ptr)
|
||||
{
|
||||
if (--container_of(ptr, struct ipc_rcu_hdr, data)->refcount > 0)
|
||||
|
@ -601,8 +588,7 @@ void ipc_rcu_putref(void *ptr)
|
|||
call_rcu(&container_of(ptr, struct ipc_rcu_grace, data)->rcu,
|
||||
ipc_schedule_free);
|
||||
} else {
|
||||
call_rcu(&container_of(ptr, struct ipc_rcu_grace, data)->rcu,
|
||||
ipc_immediate_free);
|
||||
kfree_rcu(container_of(ptr, struct ipc_rcu_grace, data), rcu);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue