irqchip/sifive-plic: Return error code on failure
commit 6eabf656048d904d961584de2e1d45bc0854f9fb upstream.
Set error to -ENOMEM if kcalloc() fails or if irq_domain_add_linear()
fails inside of plic_probe() instead of returning 0.
Fixes: 4d936f10ff
("irqchip/sifive-plic: Probe plic driver early for Allwinner D1 platform")
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Signed-off-by: Charlie Jenkins <charlie@rivosinc.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Anup Patel <anup@brainfault.org>
Reviewed-by: Alexandre Ghiti <alexghiti@rivosinc.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/all/20240903-correct_error_codes_sifive_plic-v1-1-d929b79663a2@rivosinc.com
Closes: https://lore.kernel.org/r/202409031122.yBh8HrxA-lkp@intel.com/
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
fa5f7b9122
commit
dc08030fba
1 changed files with 6 additions and 2 deletions
|
@ -578,8 +578,10 @@ static int plic_probe(struct fwnode_handle *fwnode)
|
|||
|
||||
handler->enable_save = kcalloc(DIV_ROUND_UP(nr_irqs, 32),
|
||||
sizeof(*handler->enable_save), GFP_KERNEL);
|
||||
if (!handler->enable_save)
|
||||
if (!handler->enable_save) {
|
||||
error = -ENOMEM;
|
||||
goto fail_cleanup_contexts;
|
||||
}
|
||||
done:
|
||||
for (hwirq = 1; hwirq <= nr_irqs; hwirq++) {
|
||||
plic_toggle(handler, hwirq, 0);
|
||||
|
@ -591,8 +593,10 @@ static int plic_probe(struct fwnode_handle *fwnode)
|
|||
|
||||
priv->irqdomain = irq_domain_add_linear(to_of_node(fwnode), nr_irqs + 1,
|
||||
&plic_irqdomain_ops, priv);
|
||||
if (WARN_ON(!priv->irqdomain))
|
||||
if (WARN_ON(!priv->irqdomain)) {
|
||||
error = -ENOMEM;
|
||||
goto fail_cleanup_contexts;
|
||||
}
|
||||
|
||||
/*
|
||||
* We can have multiple PLIC instances so setup global state
|
||||
|
|
Loading…
Reference in a new issue