2018-05-12 07:06:27 +00:00
|
|
|
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|
|
|
Date: Thu, 22 Mar 2018 16:22:42 +0100
|
|
|
|
Subject: [PATCH 10/10] iommu/amd: Return proper error code in
|
|
|
|
irq_remapping_alloc()
|
2018-05-21 22:55:31 +00:00
|
|
|
Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.16/older/patches-4.16.8-rt3.tar.xz
|
2018-05-12 07:06:27 +00:00
|
|
|
|
|
|
|
Upstream commit 29d049be9438278c47253a74cf8d0ddf36bd5d68
|
|
|
|
|
|
|
|
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: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
|
|
|
|
Signed-off-by: Joerg Roedel <jroedel@suse.de>
|
|
|
|
---
|
|
|
|
drivers/iommu/amd_iommu.c | 4 ++--
|
|
|
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
|
|
|
|
|
|
--- a/drivers/iommu/amd_iommu.c
|
|
|
|
+++ b/drivers/iommu/amd_iommu.c
|
|
|
|
@@ -4110,7 +4110,7 @@ static int irq_remapping_alloc(struct ir
|
|
|
|
struct amd_ir_data *data = NULL;
|
|
|
|
struct irq_cfg *cfg;
|
|
|
|
int i, ret, devid;
|
|
|
|
- int index = -1;
|
|
|
|
+ int index;
|
|
|
|
|
|
|
|
if (!info)
|
|
|
|
return -EINVAL;
|
|
|
|
@@ -4152,7 +4152,7 @@ static int irq_remapping_alloc(struct ir
|
|
|
|
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);
|