mirror of https://gitee.com/openkylin/linux.git
ia64,rcu: Convert call_rcu(sn_irq_info_free) to kfree_rcu()
The rcu callback sn_irq_info_free() just calls a kfree(), so we use kfree_rcu() instead of the call_rcu(sn_irq_info_free). Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Cc: Jes Sorensen <jes@sgi.com> Cc: Tony Luck <tony.luck@intel.com> Cc: Fenghua Yu <fenghua.yu@intel.com> Reviewed-by: Josh Triplett <josh@joshtriplett.org>
This commit is contained in:
parent
57bdfbf9ee
commit
f218a7ee7a
|
@ -112,8 +112,6 @@ static void sn_ack_irq(struct irq_data *data)
|
||||||
irq_move_irq(data);
|
irq_move_irq(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sn_irq_info_free(struct rcu_head *head);
|
|
||||||
|
|
||||||
struct sn_irq_info *sn_retarget_vector(struct sn_irq_info *sn_irq_info,
|
struct sn_irq_info *sn_retarget_vector(struct sn_irq_info *sn_irq_info,
|
||||||
nasid_t nasid, int slice)
|
nasid_t nasid, int slice)
|
||||||
{
|
{
|
||||||
|
@ -177,7 +175,7 @@ struct sn_irq_info *sn_retarget_vector(struct sn_irq_info *sn_irq_info,
|
||||||
spin_lock(&sn_irq_info_lock);
|
spin_lock(&sn_irq_info_lock);
|
||||||
list_replace_rcu(&sn_irq_info->list, &new_irq_info->list);
|
list_replace_rcu(&sn_irq_info->list, &new_irq_info->list);
|
||||||
spin_unlock(&sn_irq_info_lock);
|
spin_unlock(&sn_irq_info_lock);
|
||||||
call_rcu(&sn_irq_info->rcu, sn_irq_info_free);
|
kfree_rcu(sn_irq_info, rcu);
|
||||||
|
|
||||||
|
|
||||||
finish_up:
|
finish_up:
|
||||||
|
@ -338,14 +336,6 @@ static void unregister_intr_pda(struct sn_irq_info *sn_irq_info)
|
||||||
rcu_read_unlock();
|
rcu_read_unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sn_irq_info_free(struct rcu_head *head)
|
|
||||||
{
|
|
||||||
struct sn_irq_info *sn_irq_info;
|
|
||||||
|
|
||||||
sn_irq_info = container_of(head, struct sn_irq_info, rcu);
|
|
||||||
kfree(sn_irq_info);
|
|
||||||
}
|
|
||||||
|
|
||||||
void sn_irq_fixup(struct pci_dev *pci_dev, struct sn_irq_info *sn_irq_info)
|
void sn_irq_fixup(struct pci_dev *pci_dev, struct sn_irq_info *sn_irq_info)
|
||||||
{
|
{
|
||||||
nasid_t nasid = sn_irq_info->irq_nasid;
|
nasid_t nasid = sn_irq_info->irq_nasid;
|
||||||
|
@ -399,7 +389,7 @@ void sn_irq_unfixup(struct pci_dev *pci_dev)
|
||||||
spin_unlock(&sn_irq_info_lock);
|
spin_unlock(&sn_irq_info_lock);
|
||||||
if (list_empty(sn_irq_lh[sn_irq_info->irq_irq]))
|
if (list_empty(sn_irq_lh[sn_irq_info->irq_irq]))
|
||||||
free_irq_vector(sn_irq_info->irq_irq);
|
free_irq_vector(sn_irq_info->irq_irq);
|
||||||
call_rcu(&sn_irq_info->rcu, sn_irq_info_free);
|
kfree_rcu(sn_irq_info, rcu);
|
||||||
pci_dev_put(pci_dev);
|
pci_dev_put(pci_dev);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue