If we fail to allocate the name, just drop nicely into the fail path (as a footnote someone who works on this code more might want to shuffle the allocations about so the name and attributes are allocated and freed as one. There seems to be no reason to keep them separate) Signed-off-by: Alan Cox <alan@xxxxxxxxxxxxxxx> --- drivers/pci/msi.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c index 18ca2497..9bdf290 100644 --- a/drivers/pci/msi.c +++ b/drivers/pci/msi.c @@ -544,9 +544,13 @@ static int populate_msi_sysfs(struct pci_dev *pdev) return -ENOMEM; list_for_each_entry(entry, &pdev->msi_list, list) { char *name = kmalloc(20, GFP_KERNEL); + if (!name) + goto error_attrs; msi_dev_attr = kzalloc(sizeof(*msi_dev_attr), GFP_KERNEL); - if (!msi_dev_attr) + if (!msi_dev_attr) { + kfree(name); goto error_attrs; + } sprintf(name, "%d", entry->irq); sysfs_attr_init(&msi_dev_attr->attr); msi_dev_attr->attr.name = name; -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html