Re: [PATCH 01/13] genirq/msi: Add cpumask allocation to alloc_msi_entry
flat view
From: Alexander Gordeev <hidden>
Date: 2016-09-19 07:25:08
Also in:
lkml
On Wed, Sep 14, 2016 at 04:18:47PM +0200, Christoph Hellwig wrote:
quoted hunk ↗ jump to hunk
diff --git a/kernel/irq/msi.c b/kernel/irq/msi.c index 19e9dfb..8a3e8727 100644 --- a/kernel/irq/msi.c +++ b/kernel/irq/msi.c@@ -18,20 +18,42 @@ /* Temparory solution for building, will be removed later */ #include <linux/pci.h> -struct msi_desc *alloc_msi_entry(struct device *dev) +/** + * alloc_msi_entry - Allocate an initialize msi_entry + * @dev: Pointer to the device for which this is allocated + * @nvec: The number of vectors used in this entry + * @affinity: Optional pointer to an affinity mask array size of @nvec + * + * If @affinity is not NULL then a an affinity array[@nvec] is allocated + * and the affinity masks from @affinity are copied. + */ +struct msi_desc * +alloc_msi_entry(struct device *dev, int nvec, const struct cpumask *affinity) { - struct msi_desc *desc = kzalloc(sizeof(*desc), GFP_KERNEL); + struct msi_desc *desc; + + desc = kzalloc(sizeof(*desc), GFP_KERNEL); if (!desc) return NULL; INIT_LIST_HEAD(&desc->list); desc->dev = dev; + desc->nvec_used = nvec; + if (affinity) { + desc->affinity = kmemdup(affinity, + nvec * sizeof(*desc->affinity), GFP_KERNEL); + if (!desc->affinity) { + kfree(desc); + return NULL; + } + }
nit - should not "desc" initialization follow "desc->affinity" allocation?
return desc;
}
void free_msi_entry(struct msi_desc *entry)
{
+ kfree(entry->affinity);
kfree(entry);
}
--
2.1.4