Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 29d049be authored by Sebastian Andrzej Siewior's avatar Sebastian Andrzej Siewior Committed by Joerg Roedel
Browse files

iommu/amd: Return proper error code in irq_remapping_alloc()



In the unlikely case when alloc_irq_table() is not able to return a
remap table then "ret" will be assigned with an error code. Later, the
code checks `index' and if it is negative (which it is because it is
initialized with `-1') and then then function properly aborts but
returns `-1' instead `-ENOMEM' what was intended.
In order to correct this, I assign -ENOMEM to index.

Signed-off-by: default avatarSebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
parent 2cd1083d
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -4124,7 +4124,7 @@ static int irq_remapping_alloc(struct irq_domain *domain, unsigned int virq,
	struct amd_ir_data *data = NULL;
	struct irq_cfg *cfg;
	int i, ret, devid;
	int index = -1;
	int index;

	if (!info)
		return -EINVAL;
@@ -4166,7 +4166,7 @@ static int irq_remapping_alloc(struct irq_domain *domain, unsigned int virq,
			WARN_ON(table->min_index != 32);
			index = info->ioapic_pin;
		} else {
			ret = -ENOMEM;
			index = -ENOMEM;
		}
	} else {
		bool align = (info->type == X86_IRQ_ALLOC_TYPE_MSI);